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



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

第一个形状是conv2D的权重,第二个形状是同一层的偏差,用向量表示。

查看文档,可以看到

例如,Dense层返回两个值的列表:核矩阵和偏置向量。这些可以用来设置另一个Dense层的权重:

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

相关内容

  • 没有找到相关文章

最新更新