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]的形状?
答案 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]
矩阵。