Keras 常见层的知识点理解

Dense()

Keras框架中的Dense(),是Keras中的core中的一个重要的函数
用来对上一层的神经元进行全部连接,实现特征的非线性组合。
该函数所在windows目录的位置为:\Anaconda3\Lib\site-packages\keras\layers\core.py
(windows环境下配置Keras是在Anaconda3的环境下进行配置,减少了各种依赖包的频繁安装)
详细的可以参考Keras的中文社区文档

keras.layers.core.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)

Dense就是常用的全连接层,所实现的运算是output = activation(dot(input, kernel)+bias)。其中activation是逐元素计算的激活函数,kernel`是本层的权值矩阵,bias为偏置向量,只有当use_bias=True才会添加。

如果本层的输入数据的维度大于2,则会先被压为与kernel相匹配的大小。

  • units:大于0的整数,代表该层的输出维度。
  • activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
  • use_bias: 布尔值,是否使用偏置项
#as first layer in a sequential model:

model = Sequential()

model.add(Dense(32, input_shape=(16,)))  #input_shape=(16,)等价于input_dim=16

#now the model will take as input arrays of shape (*, 16) ,输入维度=16

#and output arrays of shape (*, 32) ,输出维度=32

#after the first layer, you don't need to specify

#the size of the input anymore:

model.add(Dense(32)) #这一层的input_shape=(32,)

全连接层(Fully Connected layer)就是使用了softmax激励函数作为输出层的多层感知机(Multi-Layer Perceptron),其他很多分类器如支持向量机也使用了softmax。“全连接”表示上一层的每一个神经元,都和下一层的每一个神经元是相互连接的。

卷积层和池化层那个的输出代表了输入图像的高级特征,全连接层的目的就是用这些特征进行分类,类别基于训练集。比如图14所示的图像分类任务,有四种可能的类别。(注意,图14没有显示出所有的神经元节点)
图14:全连接层——每个节点都与相邻层的所有节点相连

除了分类以外,加入全连接层也是学习特征之间非线性组合的有效办法。卷积层和池化层提取出来的特征很好,但是如果考虑这些特征之间的组合,就更好了。*

全连接层的输出概率之和为1,这是由激励函数Softmax保证的。Softmax函数把任意实值的向量转变成元素取之0-1且和为1的向量。


Reshape ()

用来将输入shape转换为特定的shape

#as first layer in a Sequential model

model = Sequential()

model.add(Reshape((3, 4), input_shape=(12,)))

#now: model.output_shape == (None, 3, 4) ,None任意正整数

#note: `None` is the batch dimension ,批次大小,就是每次样本数量

#as intermediate layer in a Sequential model ,中间层

model.add(Reshape((6, 2)))

#now: model.output_shape == (None, 6, 2)

#also supports shape inference using `-1` as dimension ,推断inference ,自动判断大小

model.add(Reshape((-1, 2, 2)))

#now: model.output_shape 
  • 7
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值