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)
示例:
輸出的結果如下所示:
可以看到輸出結果的最後一次元就等于神經元的個數,即units的數值(神經元的個數)
在網絡中使用全連接配接層的作用是什麼呢?這一點還是不太清楚,希望知道的可以幫忙解釋一下,互相交流一下
- 全連接配接層:通常在CNN的尾部進行重新拟合,減少特征資訊的損失