【问题标题】:pytorch Dropout: "channel will be zeroed out independently"pytorch Dropout:“通道将独立清零”
【发布时间】:2021-11-29 10:06:06
【问题描述】:

在 pytorch doc 中指出:在训练期间,使用来自伯努利分布的样本以概率 p 将输入张量的一些元素随机归零。每次前转呼叫时,每个通道都将独立归零。

“每次前向呼叫都独立归零”是什么意思?下面是我的实现的伪代码,它们是否等同于 pytorch 版本?

import numpy as np
p = 0.3
inpt = np.random.randn((2, 3, 3))  # input tensor

# forward, when training is true
mask = np.random.choice(a=[False, True], size=inpt.shape, p=[p, 1 - p])
output = inpt * mask / (1 - p)  # output tensor
return output

# forward, when training is false
return inpt # does nothing

# backward propagation
inpt.grad += incoming_gradient * mask # apply the same mask on incoming gradient

【问题讨论】:

    标签: pytorch dropout


    【解决方案1】:

    您不需要在梯度上应用掩码,激活已经被掩蔽,即梯度不会流过在前向传递中被掩蔽的神经元。见source

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 2021-10-08
      • 2018-10-14
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多