我有一个关于 LSTM 教程中 dropout 函数的问题:http: //deeplearning.net/tutorial/code/lstm.py
def dropout_layer(state_before, use_noise, trng):
proj = tensor.switch(use_noise,
(state_before *
trng.binomial(state_before.shape,
p=0.5, n=1,
dtype=state_before.dtype)),
state_before * 0.5)
return proj
据我了解,代码意味着当 时use_noise=1
,我们state_before
乘以一个随机二进制向量(即 dropout 过程)。
但是use_noise=0
,当我们验证模型时使用 时,我们将隐藏单元值设置为state_before*0.5
。
为什么*0.5
在这里?
不应该只是state_before
不乘以任何数字吗?