2016-09-15 27 views
1

我想在TensorFlow中嘗試一種體系結構。如何在TensorFlow中實現DecomposeMe體系結構?

這個想法是通過一維濾波器的組合來組成二維濾波器內核。

paper

簡化ConvNets通過篩選組合物

我們的提議的實質在於分解傳統網絡的ND內核成1D內核的N個連續層。
...
我們建議DecomposeMe這是一個由分解層組成的體系結構。每個分解層表示作爲1D濾波器的組合的N-D卷積層,並且另外通過在其之間包括非線性φ(·)。
...
轉換現有結構以分解的那些是一個簡單的過程, 每個現有ND卷積層可以系統被分解成組的連續 層由1D的線性整流內核和1D換位內核 如圖如圖1所示。

如果我理解正確,單個2-D卷積層被替換爲兩個連續的1-D卷積?

考慮到權重是共享和轉置的,我不清楚在TensorFlow中如何實現它。

回答

1

我知道這個問題很老,你可能已經想通了,但它可能會幫助其他人有同樣的問題。

可分卷積可以在tensorflow被實現爲如下(細節省略):

X= placeholder(float32, shape=[None,100,100,3]); 
v1=Variable(truncated_normal([d,1,3,K],stddev=0.001)); 
h1=Variable(truncated_normal([1,d,K,N],stddev=0.001)); 
M1=relu(conv2(conv2(X,v1),h1)); 

與列向量標準2D卷積相同卷積該矢量輸入的每一列。卷積V1產生ķ特徵映射(或者具有K個通道的輸出圖像),然後將其傳遞到卷積通過產生featuremaps N的最終期望數量H1

重量共享,據我所知,只是一個誤導性術語,這是爲了強調一個事實,即您使用與圖像中每個補丁卷積的一個濾鏡。很明顯,您將使用相同的濾鏡來獲取每個輸出像素的結果,這就是每個人在圖像/信號處理中的表現。

然後以「分解」的卷積層5頁中所示,可以通過簡單地將活化單位的卷積之間完成(忽略偏壓):

M1=relu(conv2(relu(conv2(X,v1)),h1)); 

這並不是說每個過濾器在v1是列向量[d,1],每個h1是行向量[1,d]。這篇論文有點含糊,但是在執行可分離卷積時,這是如何完成的。也就是說,您將圖像與列向量進行卷積,然後將結果與水平向量進行卷積,以獲得最終結果。

相關問題