keras 为什么TensorFlow Conv2D有两个权重矩阵?

xcitsw88  于 2022-11-24  发布在  其他
关注(0)|答案(2)|浏览(185)

我有一个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?它们各自的含义是什么?

mu0hgdu0

mu0hgdu01#

第一个形状是conv2D的权重,第二个形状是同一层的偏移,由向量表示。
查看文档,您可以看到
例如,“密集”图层返回包含两个值的列表:内核矩阵和偏移向量。这些可用于设置另一个密集层的权重:

qco9c6ql

qco9c6ql2#

你有128个卷积滤波器,每个滤波器都有一个偏置和一个内核。内核的大小为3x3。此外,内核深度等于输入深度(在本例中表示64)。因此,我们有(3, 3, 64)作为内核,有128滤波器,因此所有滤波器的形状都等于(3, 3, 64, 128)。此外,因此第二权重的形状等于(128,)

相关问题