2017-08-31 11 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ニューロンの単層であるため、重み行列はどのようにして11x10になりますか?テンソルフロー稠密層操作

答えて

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」出力ニューロンを含む。入力には、「11x」入力ニューロンの「5x3」グループがある。したがって、これらの '5x3'グループのそれぞれでは、' 11'のセットに行列が乗算されて '10'の集合が得られます。 –

関連する問題