Caffe详解(七)Dropout层

2020-05-06  本文已影响0人  AI异构
Caffe详解

从零开始,一步一步学习caffe的使用,期间贯穿深度学习和调参的相关知识!

Dropout 参数设置

Dropout是一个防止过拟合的层,只需要设置一个dropout_ratio就可以了。


layer {
  name: "drop7"
  type: "Dropout"
  bottom: "fc7-conv"
  top: "fc7-conv"
  dropout_param {
    dropout_ratio: 0.5
  }
}

Dropout 实现代码


def dropout(X, drop_probability):
    keep_probability = 1 - drop_probability
    assert 0 <= keep_probability <= 1
    # 这种情况下把全部元素都丢弃。
    if keep_probability == 0:
        return X.zeros_like()

    # 随机选择一部分该层的输出作为丢弃元素。
    mask = nd.random.uniform(
        0, 1.0, X.shape, ctx=X.context) < keep_probability
    # 保证 E[dropout(X)] == X
    scale =  1 / keep_probability
    return mask * X * scale

Dropout 意义

Dropout可以被认为是集成大量深层神经网络的实用Bagging方法。但是Bagging方法涉及训练多个模型,并且在每个测试样本上评估多个模型。当每个模型都是一个大型神经网络时,Bagging方法会耗费很多的时间和内存。而Dropout则提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。

Dropout

Dropout 小结

参考

Deep Learning Book
深度学习中的正则化

上一篇 下一篇

猜你喜欢

热点阅读