美文网首页
神经网络中的Dropout

神经网络中的Dropout

作者: 哎吆喂轩 | 来源:发表于2019-01-08 13:21 被阅读0次

    Dropout 的理解

    • Dropout 在深度学习中是一种防止过拟合的手段,具有很好的容错能力。
    • dropout 是在深度学习的训练过程中,按照一定的概率将神经网络单元从网络中暂时丢弃。
    • 对于梯度下降而言,在训练过程中是随机丢弃神经网络单元,所以每l轮次中每一个mini-batch都在训练不同的网络。

    Dropout 的主要思想

    • 每次迭代时(包括正向传播和反向传播),按照一定的比率(keep-prob),让隐藏层的部分节点失效,达到简化网络拓扑结构。
    • 缓解一些节点的强依赖性,并使得反向传播的修正值,平衡地分步到各个参数上。


      dropout的图例

    代码实现

    from tensorflow.contrib.layers import dropout
    [......]
    is_training = tf.placeholder(tf.bool, shape = (), name = 'is_training')
    
    keep_prob = 0.5
    X_drop = dropout(X, keep_prob, is_training = is_training)
    
    hidden1 = fully_connected(X_drop, n_hidden1, scope = "hidden1")
    hidden1_drop = dropout(hidden1, keep_prob, is_training = is_training)
    hidden2 = fully_connected(X_drop, n_hidden2, scope = "hidden2")
    hidden2_drop = dropout(hidden2, keep_prob, is_training = is_training)
    
    logits = fully_connected(hidden2_drop, n_outputs, activation_fn = None, scope = "outputs")
    
    • 其中,keep_prob 是保留下来的比例,1- keep_prob 是dropout_rate
    • 如果在训练的时候,将is_training 设置为True,则在测试的时候,需要将is_training设置为False

    相关文章

      网友评论

          本文标题:神经网络中的Dropout

          本文链接:https://www.haomeiwen.com/subject/rbwmrqtx.html