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)]) 

将在中间创建一个具有抖落层的双层网络。请注意,我没有真正尝试过这个问题。