我有一个tf.keras.layers.Conv2D
,结构如下:
>>> conv2d_layer = tf.keras.layers.Conv2D(filters=128, kernel_size=(3, 3), strides=2)
作为参考,该层是网络的一部分,其中前一层是prior_layer = Conv2D(filters=64, kernel_size=(3, 3), strides=2)
。
当我调用conv2d_layer.get_weights()
时,它返回一个包含两个条目的列表:
>>> [w.shape for w in conv2d_layer.get_weights()]
[(3, 3, 64, 128), (128,)]
为什么conv2d_layer.get_weights()
中有两个np.ndarray
?它们各自的含义是什么?
2条答案
按热度按时间mu0hgdu01#
第一个形状是conv2D的权重,第二个形状是同一层的偏移,由向量表示。
查看文档,您可以看到
例如,“密集”图层返回包含两个值的列表:内核矩阵和偏移向量。这些可用于设置另一个密集层的权重:
qco9c6ql2#
你有
128
个卷积滤波器,每个滤波器都有一个偏置和一个内核。内核的大小为3x3
。此外,内核深度等于输入深度(在本例中表示64
)。因此,我们有(3, 3, 64)
作为内核,有128
滤波器,因此所有滤波器的形状都等于(3, 3, 64, 128)
。此外,因此第二权重的形状等于(128,)