根据经典论文
http://www.cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf
dropout 操作不仅影响训练步骤,还影响测试步骤——我们需要将所有神经元输出权重乘以概率 p。
但是在 keras 库中,我发现了 dropout 操作的以下实现:
retain_prob = 1. - level
...
random_tensor = rng.binomial(x.shape, p=retain_prob, dtype=x.dtype)
...
x *= random_tensor
x /= retain_prob
return x
(见https://github.com/fchollet/keras/blob/master/keras/backend/theano_backend.py)
为什么 x 除以 retain_prob 而应该相乘?或者我只是很困惑,乘以权重等于除以输出值?