Dropout¶
Dropout 是一种正则化手段,该算子根据给定的丢弃概率 p,在训练过程中随机将一些神经元输出设置为 0,通过阻止神经元节点间的相关性来减少过拟合。论文请参考:Improving neural networks by preventing co-adaptation of feature detectors
在动态图模式下,请使用模型的 eval() 方法切换至测试阶段。
注解
对应的 functional 方法 请参考:dropout 。
参数¶
p (float):将输入节点置为 0 的概率,即丢弃概率。默认:0.5。
axis (int|list):指定对输入 Tensor 进行 Dropout 操作的轴。默认:None。
mode (str):丢弃单元的方式,有两种'upscale_in_train'和'downscale_in_infer',默认:'upscale_in_train'。计算方法如下:
upscale_in_train,在训练时增大输出结果。
train: out = input * mask / ( 1.0 - p )
inference: out = input
downscale_in_infer,在预测时减小输出结果
train: out = input * mask
inference: out = input * (1.0 - p)
name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。
形状¶
输入 : N-D Tensor 。
输出 : N-D Tensor,形状与输入相同。
代码示例¶
import paddle
x = paddle.to_tensor([[1,2,3], [4,5,6]], dtype="float32")
m = paddle.nn.Dropout(p=0.5)
y_train = m(x)
print(y_train)
# Tensor(shape=[2, 3], dtype=float32, place=Place(gpu:0), stop_gradient=True,
# [[2., 0., 6.],
# [0., 0., 0.]])
m.eval() # switch the model to test phase
y_test = m(x)
print(y_test)
# Tensor(shape=[2, 3], dtype=float32, place=Place(gpu:0), stop_gradient=True,
# [[1., 2., 3.],
# [4., 5., 6.]])