我有一个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
s ?它们各自的含义是什么?
第一个形状是conv2D的权重,第二个形状是同一层的偏差,用向量表示。
查看文档,可以看到
例如,Dense层返回两个值的列表:核矩阵和偏置向量。这些可以用来设置另一个Dense层的权重:
你有128
卷积滤波器,每个滤波器有一个偏置和一个核。内核的大小为3x3
。此外,内核深度等于输入深度(在本例中表示64
)。所以我们有(3, 3, 64)
内核,我们有128
过滤器,所以所有过滤器的形状都等于(3, 3, 64, 128)
。此外,我们对每个滤镜都有一个偏差,所以第二个权重的形状等于(128,)