2017-09-30 140 views
1

我想我會問這裏多個quesitons,我想任何評論,因爲我是新來Caffe。Caffe Element -Wise乘法與固定斑點

在我的網絡輸入圖像具有尺寸1x41x41由於我使用的64批次大小,我認爲數據量將是64x1x41x41(請糾正我,如果這是錯誤的)

一些卷積層後(不改變數據大小),我想將結果數據乘以大小爲1x41x41的預定義斑點。使用EltwiseLayer來進行乘法似乎很方便。所以爲了定義Eltwise的第二底層,我需要爲blob提供另一個輸入數據。 (請告知這是否可以通過其他方式完成)

第一個問題:批量培訓令我困惑。如果我想將一批圖像與EltwiseLayer中的單個斑點相乘,底部尺寸應該是相同的嗎?換句話說,我應該使用repmat(matlab)來克隆64個斑點的大小爲64x1x41x41或者我可以插入大小爲1x1x41x41的單個斑點?

第二個問題:我想用100個不同的斑點數乘以數據,然後取100個結果的平均值。我是否需要定義100 EltwiseLayers才能完成這項工作?或者我可以收集大小爲1x100x41x41(或64x100x41x41)的單個數據中的斑點並克隆要倍增的數據100次?如果是這樣,我該怎麼做?一個例子會非常有用。 (我見過一個TileLayer的地方,但信息遍佈銀河系。)

在此先感謝。

+0

使用瓷磚層,而不是repmat – Shai

+1

什麼是乘以100點用**固定**矩陣乘以平均值?以100個矩陣**的平均值**一次**乘以blob – Shai

+0

@Shai你實際上正確地使用斑點的平均值。我不知道我將如何合併100個結果,也許我可以使用maxpooling等。對於瓦片層[鏈接](https://github.com/BVLC/caffe/issues/4422)無法回答我是怎麼想的使用它;我也無法關注doxygen文檔以瞭解要設置哪些參數。 – Tarhan

回答

2

爲了在caffe中進行元素相乘,這兩個blob必須有正好相同的形狀。 Caffe沿單身尺寸不會"broadcast"
因此,如果您想要將每批形狀爲1x41x41的一批64個斑點相乘,則必須提供兩個64x1x41x41底部斑點。
正如你已經指出的那樣,你可以使用"Tile"層做repmat ING:

layer { 
    name: "repmat" 
    type: "Tile" 
    bottom: "const_1x1x41x41_blob" 
    top: "const_64x1x41x41_blob" 
    tile_param { 
    axis = 0 # you want to "repmat" along the first axis 
    tiles = 64 # you want 64 repetitions 
    } 
} 

現在你可以做"Eltwise"乘法

layer { 
    name: "mul" 
    type: "Eltwise" 
    bottom: "const_64x1x41x41_blob" 
    bottom: "other_blob" 
    top: "mul" 
    eltwise_param { 
    operation: MUL 
    } 
}