python - 我想在 CNTK 中实现正则化技术 "Shakeout"

标签 python machine-learning caffe cntk regularized

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

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

到目前为止,我已经看到了一个基于“Caffe”的开源实现,但我只是一个深度学习的新实践者,刚刚学习使用 CNTK。所以不可能开始在caffe上工作。 有人在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/

相关文章:

ubuntu - 如何解决 Ubuntu 中的链接错误?

machine-learning - 全卷积网络训练图像大小

python - 将回调绑定(bind)到对象实例

python - 在 Pandas 中使用多处理读取 csv 文件的最简单方法

python-2.7 - 当使用 3 个类时,Scikitlearn 的 SVM 中获取决策函数的输出意味着什么

machine-learning - SVM 矢量距离内核 : Valid? 有经验吗?

machine-learning - 不平衡标签 - 混淆矩阵中的更好结果

python - 在 numpy 中创建 "white"图像(二维图像)

python - 具有固定选项的多项选择。看不到选项(Django)

machine-learning - Caffe:使用 ImageData 层平衡批处理内的类