目前,与文档中所述相反,Dense 层 is applied on the last axis of input tensor:
与文档相反,我们实际上并没有将其展平。它是
独立应用于最后一个轴。
换句话说,如果将具有m 单元的Dense 层应用于形状为(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()
模型总结:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 20, 10) 60
=================================================================
Total params: 60
Trainable params: 60
Non-trainable params: 0
_________________________________________________________________
如您所见,Dense 层只有 60 个参数。如何? Dense 层中的每个单元都以相同的权重连接到输入中每一行的 5 个元素,因此 10 * 5 + 10 (bias params per unit) = 60。
更新。以下是上述示例的直观说明: