2017-07-28 64 views
0

有一紙「抖出:一種新方法正則深層神經網絡訓練」,它可以在這裏找到:http://ieeexplore.ieee.org/abstract/document/7920425/我想實現一個正則化技術「抖出」在CNTK

一種新的正技術是在引進這篇論文可以用更多的功能來替代丟失層。我正在研究一個深度學習問題,爲此我想實施「Shakeout」技術,但問題是我無法完全理解紙張的實際流水線。有太多的數學,我仍然在努力去理解。

到目前爲止,我已經看到一個基於「Caffe」的開源實現,但我只是一個深度學習的新實踐者,只是學習使用CNTK。所以它不可能開始咖啡的工作。 有沒有人在cntk中實施過「Shakeout」? 或者如果有人可以提供一個用於shakeout的僞代碼? 來自Caffe抖出實現:https://github.com/kgl-prml/shakeout-for-caffe

Github的問題:https://github.com/kgl-prml/shakeout-for-caffe/issues/1

+0

儘管這是非常有用的信息,但我並不明白你的要求。你能否詳細說明你的**實際問題**? –

+0

我編輯了這個問題來詳細說明。 關於如何在cntk中實現「Shakeout」的任何方向。 – Mobeen

回答

0

從快看紙的緻密層與洗牌層結合看起來像下面這樣:

def DenseWithShakeout(rate, c, outputs): 
    weights = C.parameter((C.InferredDimension, outputs), init=C.glorot_uniform()) 
    bias = C.parameter(outputs) 
    def shakeout(x): 
     r = C.dropout(x, rate) 
     signs = weights/C.abs(weights) # one day CNTK should add an actual sign operation 
     return C.times(r, weights) + c * C.times(r - x, signs) + bias 
    return shakeout 

這可能是在一個C.layers.Sequential()語句中使用,例如

model = C.layers.Sequential([Dense(0.2, 1, 100), DenseWithShakeout(10)]) 

將在中間創建一個具有抖落層的雙層網絡。請注意,我沒有真正嘗試過這個問題。