一个好的模型需要要输入数据的扰动鲁棒。丢弃法就是在层之间加入噪音
无偏差的噪音加入
丢弃法
总结
实现
def dropout_layer(X, dropout):
assert 0 <= dropout <= 1
# 在本情况中,所有元素都被丢弃
if dropout == 1:
return torch.zeros_like(X)
# 在本情况中,所有元素都被保留
if dropout == 0:
return X
mask = (torch.rand(X.shape) > dropout).float()
return mask * X / (1.0 - dropout)
简洁实现
nn.Dropout(0.1)