关于Keras Dense层整理
我就废话不多说了,大家还是直接看代码吧!
''' Createdon2018-4-4 ''' keras.layers.core.Dense( units,#代表该层的输出维度 activation=None,#激活函数.但是默认liner use_bias=True,#是否使用b kernel_initializer='glorot_uniform',#初始化w权重,keras/initializers.py bias_initializer='zeros',#初始化b权重 kernel_regularizer=None,#施加在权重w上的正则项,keras/regularizer.py bias_regularizer=None,#施加在偏置向量b上的正则项 activity_regularizer=None,#施加在输出上的正则项 kernel_constraint=None,#施加在权重w上的约束项 bias_constraint=None#施加在偏置b上的约束项 ) #所实现的运算是output=activation(dot(input,kernel)+bias) #model.add(Dense(units=64,activation='relu',input_dim=784)) #keras初始化所有激活函数,activation: #keras\activations.py #keras\backend\cntk_backend.py #importcntkasC #1.softmax: #对输入数据的最后一维进行softmax,一般用在输出层; #ndim==2,K.softmax(x),其实调用的是cntk,是一个模块; #ndim>=2,e=K.exp(x-K.max(x)),s=K.sum(e),returne/s #2.elu #K.elu(x) #3.selu:可伸缩的指数线性单元 #alpha=1.6732632423543772848170429916717 #scale=1.0507009873554804934193349852946 #returnscale*K.elu(x,alpha) #4.softplus #C.softplus(x) #5.softsign #returnx/(1+C.abs(x)) #6.relu #defrelu(x,alpha=0.,max_value=None): #ifalpha!=0.: #negative_part=C.relu(-x) #x=C.relu(x) #ifmax_valueisnotNone: #x=C.clip(x,0.0,max_value) #ifalpha!=0.: #x-=alpha*negative_part #returnx #7.tanh #returnC.tanh(x) #8.sigmoid #returnC.sigmoid(x) #9.hard_sigmoid #x=(0.2*x)+0.5 #x=C.clip(x,0.0,1.0) #returnx #10.linear #returnx #keras初始化所有方法,initializer: #Zeros #Ones #Constant(固定一个值) #RandomNormal(正态分布) #RandomUniform(均匀分布) #TruncatedNormal(截尾高斯分布,神经网络权重和滤波器的推荐初始化方法) #VarianceScaling(该初始化方法能够自适应目标张量的shape) #Orthogonal(随机正交矩阵初始化) #Identiy(单位矩阵初始化,仅适用于2D方阵) #lecun_uniform(LeCun均匀分布初始化) #lecun_normal(LeCun正态分布初始化) #glorot_normal(Glorot正态分布初始化) #glorot_uniform(Glorot均匀分布初始化) #he_normal(He正态分布初始化) #he_uniform(He均匀分布初始化,Keras中文文档写错了) #keras正则化,regularizer: #importbackendasK #L1:regularization+=K.sum(self.l1*K.abs(x)) #L2:regularization+=K.sum(self.l2*K.square(x))
补充知识:keras.layers.Dense()方法及其参数
一、Dense层
keras.layers.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
二、参数
units:神经元节点数数,鸡输出空间维度。
activation:激活函数,若不指定,则不使用激活函数(即线性激活:a(x)=x)。
use_bias:布尔值,该层是否使用偏置向量。
kernel_initializer:kernel权值矩阵的初始化器
bias_initializer:偏置向量的初始化器
kernel_regularizer:运用到kernel权值矩阵的正则化函数
bias_regularizer:运用到偏置向的的正则化函数
activity_regularizer:运用到层的输出的正则化函数(它的“activation”)。
kernel_constraint:运用到kernel权值矩阵的约束函数
bias_constraint:运用到偏置向量的约束函数
三、示例
例1:
fromkeras.layersimportDense #作为Sequential模型的第一层 model=Sequential() model.add(Dense(32,input_shape=(16,))) #现在模型就会以尺寸为(*,16)的数组作为输入, #其输出数组的尺寸为(*,32) #在第一层之后,你就不再需要指定输入的尺寸了: model.add(Dense(32))
注意在Sequential模型的第一层要定义Dense层的形状,此处定义为input_shape=(16,)
例2:
fromkeras.layersimportDense model=Sequential() model.add(Dense(512,activation='sigmoid',input_dim=2,use_bias=True))
这里定义了一个有512个神经元节点,使用sigmoid激活函数的神经层,此时输入形状参数为input_dim,注意它与input_shape参数的区别。
input_shape:即张量的形状,从前往后对应由外向内的维度
例
[[1],[2],[3]]这个张量的shape为(3,1)
[[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]这个张量的shape为(3,2,2),
[1,2,3,4]这个张量的shape为(4,)
input_dim:代表张量的维度,之前3个例子的input_dim分别为2,3,1。
常见的一种用法:只提供了input_dim=32,说明输入是一个32维的向量,相当于一个一阶、拥有32个元素的张量,它的shape就是(32,)。因此,input_shape=(32,)
四、总结
本文对Dense()方法及其参数做了详细的介绍,并对其用法进行了大概的讲解,有什么问题可以评论区留言或者联系我,我会及时解答。希望能给大家一个参考,也希望大家多多支持毛票票。