yad*_*sun 5 python machine-learning keras tensorflow keras-layer
这是我的测试代码:
from keras import layers
input1 = layers.Input((2,3))
output = layers.Dense(4)(input1)
print(output)
Run Code Online (Sandbox Code Playgroud)
输出是:
<tf.Tensor 'dense_2/add:0' shape=(?, 2, 4) dtype=float32>
Run Code Online (Sandbox Code Playgroud)
但是什么是重要的?
文件说:
注意:如果图层的输入的排名大于2,则在使用内核的初始点积之前将其展平.
输出重塑了吗?
tod*_*day 15
目前,与文档中所述相反,该Dense层应用于输入张量的最后一个轴:
与文档相反,我们实际上并没有将其扁平化.它独立应用于最后一个轴.
换句话说,如果在输入张量的形状上应用Dense具有m单位的图层,则(n_dim1, n_dim2, ..., n_dimk)其具有输出形状(n_dim1, n_dim2, ..., m).
作为一个方面说明:这使得TimeDistributed(Dense(...))和Dense(...)相互等同.
另一方面注意:请注意这具有共享权重的效果.例如,考虑这个玩具网络:
model = Sequential()
model.add(Dense(10, input_shape=(20, 5)))
model.summary()
Run Code Online (Sandbox Code Playgroud)
模型摘要:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 20, 10) 60
=================================================================
Total params: 60
Trainable params: 60
Non-trainable params: 0
_________________________________________________________________
Run Code Online (Sandbox Code Playgroud)
如您所见,该Dense图层只有60个参数.怎么样?在每个单元Dense层连接到与输入的每行的5个元素相同的权重,因此10 * 5 + 10 (bias params per unit) = 60.
| 归档时间: |
|
| 查看次数: |
1557 次 |
| 最近记录: |