tf.keras.layers.Dense-参数数量?

问题描述 投票:0回答:1

我一直在使用keras功能API来构建一个不错的网络。但是,我不了解tf.keras.layers.Dense中的空间连通性如何工作。

如果我将7x7x1024的体积展平,则会得到50,176个参数。我期望两层之间的参数总数为

50,176 * 4096 + 4096 = 205,524,992

是。

而且令人惊讶的是,当我移除Flatten()层时,没有出现任何尺寸不兼容错误。输出形状为7x7x4096,参数数量为:

1024 * 4096 + 4096 = 4,198,400

如果这是正确的,为什么tf.keras.layers.Dense在图层的最后尺寸之间仅具有密集的连接,为什么输出的音量为7x7x4096?

(last layer is 7 x 7 x 1024 volume) 
x = tf.keras.layers.Flatten()(x)
x = tf.keras.layers.Dense(4096)(x)
tensorflow keras-layer tf.keras
1个回答
0
投票

当传递带有张量的dim时> 2密集创建最后一个尺寸的连接作为默认行为[1](第889行,input_dim = input_shape [-1]),因此不会出现任何错误。结果,您还可以获得已经计算出的参数数量。因此,如果您使用的是3D输入,则需要先对其进行展平,然后再将其传递到Dense层。

[1] https://github.com/keras-team/keras/blob/master/keras/layers/core.py#L796

© www.soinside.com 2019 - 2024. All rights reserved.