Dropout

120 阅读1分钟

一个好的模型需要要输入数据的扰动鲁棒。丢弃法就是在层之间加入噪音

无偏差的噪音加入

截屏2023-01-04 下午12.03.23.png

E(xi)=p0+(1p)xi1p E(x_i) = p * 0 + (1-p) * \frac{x_i}{1-p}

丢弃法

截屏2023-01-04 下午12.05.22.png

截屏2023-01-04 下午12.05.36.png

总结

截屏2023-01-04 下午12.06.11.png

实现

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)