此密集层如何计算其尺寸?

时间:2019-12-12 01:37:47

标签: tensorflow

layer = tf.keras.layers.Dense(10, input_shape=(None, 5))
x = layer(tf.zeros([10,5])) 

x是[10,10]矩阵。这是为什么?为什么不是[10,5]?似乎在内部执行[10,5] * [5,10]。

密集层如何具有[5,10]的形状?

1 个答案:

答案 0 :(得分:1)

您正在传递形状为(None, 5)的输入

然后您将获得一个包含10个单位的密集层。该密集层具有两组可训练的参数。

kernel => A (5,10) Matrix
bias => A (10) vector

致密层知道要构造的正确形状,因为您正在传递input_shape参数。

然后,当您调用layer(tf.zeros([10,5]))时,它将进行以下计算。

matmul(input[10,5], kernel[5, 10]) + bias[1, 10] => x[10,10]

如您所见,它产生一个[10,10]矩阵。