2017-08-31 70 views
3
a = tf.random_uniform([5, 3, 5]) 
b = tf.random_uniform([5, 1, 6]) 

tiled_b = tf.tile(b, [1, 3, 1]) 
c = tf.concat([a, tiled_b], 2) 
d = tf.layers.dense(c, 10, activation=tf.nn.relu) 

這裏的輸出形狀竟然是5x3x10。輸入形狀爲5x3x11。我看過這個操作的源代碼,發現權重矩陣的形狀是11x10。我也明白,操作類似於res = np.tensordot(input,weights,axes=([2],[0]))。我不明白的是這是如何發生的。我如何在神經網絡中可視化這個操作?因爲,密集層僅僅是一個有10個神經元的單層,那麼權重矩陣如何可以是11x10Tensorflow緻密層操作

回答

1

對於密集層,每個輸入通道都通過一個權重連接到每個輸出神經元。所以這裏input_channel=11ouput_channel=10,所以權數11x10

# input 5x3x11, here last dimension is the input channel 
dense_layer_weight_shape = [input_channel, output_channel] 
+0

每個神經元如何連接到輸入通道?你是說每個神經元都是由'5x3'矩陣共享的嗎?如果是這樣,那麼發生的操作是什麼? –

+2

每個'5x3'組包含'10'個輸出神經元。在輸入中,有'5x3'組的'11'輸入神經元。因此,在這些「5x3」組的每一組中,該組「11」乘以一個矩陣以得到一組「10」。 –