2017-03-02 9 views
0

Tensorflowの 'deep mnist for experts'のmnistの例を理解できません。テンソルフローのmnistの例を理解していません

ディープネットワークを構築するために、このタイプの複数のレイヤーをスタックします。 2番目のレイヤーは、5x5パッチごとに64個の機能を備えています。

W_conv2 = weight_variable([5, 5, 32, 64]) 
b_conv2 = bias_variable([64]) 

h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2) 
h_pool2 = max_pool_2x2(h_conv2) 

outputchannelはそう、

W_conv2 = weight_variable([5, 5, 32, 2]) 

最初に私たちは32 * 2 * 5 * 5フィルタoutputchannel 64のために必要だと思う64

である理由を私は知りませんすべての、私は良い英語のために残念です 多分あなたは私の質問を理解するのが難しい 私は、sudoのコードロジックを書くので

inputimage = arr[1][28][28][32] 
w_conv2 = arr[5][5][32][2] 
output = [1][28][28][64] 
for batch in 1 
    for input in 32 
    for output in 2 
     output[][][][input*output] = conv(inputimage,w_conv2) 

私はそれが32 * 2フィルターを使って62の出力機能を作り、メモリを節約すると思います どの部分が間違っていますか?

はあなたに

+0

[この質問を参照してください](http://stackoverflow.com/questions/42507766/why-am-i-getting -only-one-channeled-through-the-tf-nn-conv2d)と[この質問](http://stackoverflow.com/questions/34619177/what-does-tf-nn-conv2d-do-in -tensorflow)あなたはあなたの答えを得るでしょう。 – jabalazs

+0

すべての最初の、私は 英語良くないごめんなさい多分あなたはハード私頼む そうI」、sudoのコードロジックを記述 入力画像= ARR [1] [28] [28] [32] w_conv2を理解します= ARR [5] [5] [32] [2] 出力= [1]〜[28] [28] [64]出力のため \t \t 32に入力するための1 \tにおけるバッチの \t \t \t出力[] [] [入力*出力] = conv(入力画像、w_conv2) 私はそれが62の出力を作ると思います32 * 2フィルタを使用してメモリを節約する機能 どの部分が間違っていますか? ありがとう –

+0

私の答え[ここ](http://stackoverflow.com/a/42451067/3941813)も非常によく似た質問があります。あなたの答えに – jabalazs

答えて

2

に感謝事実は、出力寸法は入力のそれとは独立していることです。

実際畳み込みの各ステップはW_conv2間のテンソル積(W)と入力行列(I)の任意(n * m)部分である:Wは寸法(n * m * k * h)及びI (n * m * k)を持っている場合、私はWの*積の結果であります次元がhのベクトルです。

は、IとWで等しい必要がありますが、hには制限はありません。

0

フィルタ(5x5)を使用しており、すべての入力データに対してすべてのフィルタで使用しているので、サイズが大きくなります。したがって、それは次のようになります: 32 * 2 * 1(1つのフィルタを使用しているため1つ)

関連する問題