有一篇论文“ Shakeout:正规化深度神经网络训练的新方法”,可以在这里找到:http://ieeexplore.ieee.org/abstract/document/7920425/

本文介绍了一种新的正则化技术,该技术可以以更实用的方式替换丢包层。我正在研究一个深度学习问题,因此我想实现“ Shakeout”技术,但是问题是我无法从本文中完全理解实际的流程。我仍然很难理解太多的数学。

到目前为止,我已经看到了一个基于“ Caffe”的开源实现,但是我只是深度学习和学习使用CNTK的新实践者。因此无法开始制作咖啡。
有没有人在cntk中实现“ Shakeout”?
还是有人可以提供伪代码进行淘汰?
在Caffe上执行Shakeout实施:https://github.com/kgl-prml/shakeout-for-caffe

Github问题:https://github.com/kgl-prml/shakeout-for-caffe/issues/1

最佳答案

快速浏览纸张,将致密层与阴影层结合在一起,如下所示:

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


将创建一个两层网络,中间有一个阴影层。请注意,我实际上没有在任何实际问题上尝试过此操作。

关于python - 我想在CNTK中实现正则化技术“Shakeout”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45364259/

10-12 18:24