Dense层

1 常见参数

model.add(Dense(units, #输出的大小(神经元个数)
                activation=None, #激活函数
                use_bias=True, #是否添加偏置
                kernel_initializer='glorot_uniform', #权重矩阵初始化
                bias_initializer='zeros', #偏置初始化
                kernel_regularizer=None, #权重矩阵的正则函数
                bias_regularizer=None,) #偏置的的正则函数
          )

注意,当Dence层作为输入层时需要添加一个参数 input_dim。

input_dim:代表输入数据的维度 。

2 作用

Dense层可在model中添加神经网络层,model.add(Dense())。

下图(从网上找的图)的黑圆圈为神经元,输入层的神经元会将输入数据直接传递给下一层,在下一层的神经元中对输入值进行处理。因此用Dense层作为输入层时,同时增加了输入层和隐藏层。

 由上图可以,在输入层没有对输入数据进行处理,输入层神经元节点会将输入数据直接传递给下一层(隐层或输出层)。

3 举例

model.add(Dense(512, activation= 'sigmoid', input_dim=2))

input_dim= 2:输入是(*,2)的数组;

units=512:输出是 (*,512) 的数组;

由于Dense层的输出公式为:Out=Activation( Input·Kernel )+Bias,该Dense层的输入Input是(*,2),输出Out是(*,512),因此Bias和Kernel是(2,512)的向量。

注意:当input的秩小于等于2时,那么它直接与权重矩阵进行点乘;当input的秩大于2时,它首先被展平flatten,再计算与权重矩阵的点乘。

4 Dense层参数计算

由于Dense层的输出公式为:Out=Activation( Input·Kernel )+Bias,因此Dense层参数计算公式为:Param = (上一层神经元数量)x (本层的神经元数量) + (本层的神经元数量)。其中,(上一层神经元数量)x (本层的神经元数量)代表的是 input\cdot kernel 的参数个数,加上的本层的神经元数量代表的是bias的参数。

from keras.layers import Dense
from keras.models import Sequential
model=Sequential()
model.add(Dense(10,input_dim=5))
model.summary()

Dense层_第1张图片

即Param=(5+1)×10=60。 

你可能感兴趣的:(Python内置函数,keras,深度学习,神经网络)