2015-06-04 18 views
2

該函數的輸出的大小的形式爲:當前正在廣泛使用上教程和其他地方的theano.tensor.nnet.conv.conv2d

conv_out = conv2d(
     input= x, # some 4d tensor 
     filters= w, # some shared variable 
     filter_shape= [ nkerns, stack_size, filter_height, filter_width ], 
     image_shape= [ batch_size, stack_size, height, width ] 
    ) 
  1. 如果第一層美國有線電視新聞網,我有作爲[ 20, 1 , 7, 7 ]這是kernals的數量是20,每個7×7,'1'代表什麼?我的image_shape[100, 1, 84, 84 ]

  2. 這個卷積現在輸出我理解的形狀[ 100, 20, 26, 26]的張量。我的下一層現在採用參數 = [50, 20, 5 ,5 ],image_shape = [ 100, 20 ,26, 26 ]併產生形狀爲[ 100 ,50 ,11 ,11 ]的輸出。我似乎理解這種操作,除非如果我想使用生成的前20個功能地圖上的每個「50」過濾器層,我不應該生成1000個功能地圖,而不是隻生成50個功能地圖?爲了重申我的問題,我有一堆20個特徵映射,每個特徵映射都運行50個卷積,不應該是我的輸出形狀是[100, 1000, 11, 11]而不是[ 100, 50 , 11, 11]

+1

實際上,你能解釋一下如何得到[100,20,26,26]的輸出張量嗎?這正是我正在努力的。我認爲卷積是一個7x7形狀的濾波器,可以跨越輸入圖像,我認爲輸出張量是100 x 1 x 84-7 x 84-7 ...您的指針非常感謝! – Bastiaan

回答

4

回答您的問題:

  1. 1代表輸入通道的數量。由於您似乎正在使用灰度圖像,所以這是一個。對於彩色圖像,它可以是3.對於第二個問題中的其他卷積圖層,它必須等於上一層生成的輸出數量。

  2. 對輸入信號[100, 20, 26, 26]使用尺寸爲[50, 20, 5, 5]的過濾器實際上也是第一個問題的一個很好的例子。你在這裏有50個形狀爲[20, 5, 5]的過濾器。每張圖片的形狀爲[20, 26, 26]。卷積每次使用全部20個通道:濾波器0被應用於圖像通道0,濾波器1被應用於圖像1,並且整體結果被累加。那有意義嗎?

+1

對不起,如果這看起來像一個非常基本的問題,但爲什麼整個結果總結?這似乎是我讀過的每個論壇/論文的現狀,原因並不明確。與OP一樣,我的印象是,當生成了許多特徵映射時,下一層將對每個特徵映射進行卷積。關於我能閱讀的東西的任何建議,以幫助我理解背後的理論? – biohazard

+0

我想這是一個標準的做法,已經證明對於例如對象識別而言有效的是哪種類型的功能可以讓你學習。如果你願意,你也可以不這樣做。例如。散射變換不會這樣做。現在或將來可能會有一兩篇論文顯示您不一定需要學習 – eickenberg

+0

謝謝您的反饋:) – biohazard

相關問題