【发布时间】: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
【问题讨论】: