天天看點

tf.layers.dense()的用法

dense :全連接配接層  相當于添加一個層

函數如下:

tf.layers.dense(

    inputs,

    units,

    activation=None,

    use_bias=True,

    kernel_initializer=None,  ##卷積核的初始化器

    bias_initializer=tf.zeros_initializer(),  ##偏置項的初始化器,預設初始化為0

    kernel_regularizer=None,    ##卷積核的正則化,可選

    bias_regularizer=None,    ##偏置項的正則化,可選

    activity_regularizer=None,   ##輸出的正則化函數

    kernel_constraint=None,   

    bias_constraint=None,

    trainable=True,

    name=None,  ##層的名字

    reuse=None  ##是否重複使用參數

)

部分參數解釋:

inputs:輸入該網絡層的資料

units:輸出的次元大小,改變inputs的最後一維

activation:激活函數,即神經網絡的非線性變化

use_bias:使用bias為True(預設使用),不用bias改成False即可,是否使用偏置項

trainable=True:表明該層的參數是否參與訓練。如果為真則變量加入到圖集合中

 GraphKeys.TRAINABLE_VARIABLES (see tf.Variable)

在其他網站上看到的使用現象

dense1 = tf.layers.dense(inputs=pool3, units=1024, activation=tf.nn.relu,                                

                                           kernel_regularizer=tf.contrib.layers.l2_regularizer(0.003))

#全連接配接層

dense1 = tf.layers.dense(inputs=pool3, units=1024, activation=tf.nn.relu)

dense2= tf.layers.dense(inputs=dense1, units=512, activation=tf.nn.relu)

logits= tf.layers.dense(inputs=dense2, units=10, activation=None)

示例:

tf.layers.dense()的用法

輸出的結果如下所示:

tf.layers.dense()的用法

可以看到輸出結果的最後一次元就等于神經元的個數,即units的數值(神經元的個數)

在網絡中使用全連接配接層的作用是什麼呢?這一點還是不太清楚,希望知道的可以幫忙解釋一下,互相交流一下

  • 全連接配接層:通常在CNN的尾部進行重新拟合,減少特征資訊的損失

繼續閱讀