Dropout3D

paddle.nn. Dropout3D ( p=0.5, data_format='NCDHW', name=None ) [源代码]

根据丢弃概率 p,在训练过程中随机将某些通道特征图置 0(对一个形状为 NCDHW 的 5 维张量,通道特征图指的是其中的形状为 DHW 的 3 维特征图)。Dropout3D 可以提高通道特征图之间的独立性。论文请参考:Efficient Object Localization Using Convolutional Networks

在动态图模式下,请使用模型的 eval() 方法切换至测试阶段。

注解

对应的 functional 方法 请参考:dropout3d

参数

  • p (float):将输入通道置 0 的概率,即丢弃概率。默认:0.5。

  • data_format (str):指定输入的数据格式,输出的数据格式将与输入保持一致,可以是 NCDHWNDHWC。其中 N 是批尺寸,C 是通道数,D 是特征深度,H 是特征高度,W 是特征宽度。默认值:NCDHW

  • name (str,可选) - 具体用法请参见 Name,一般无需设置,默认值为 None。

形状

  • 输入 : 5-D Tensor

  • 输出 : 5-D Tensor,形状与输入相同。

代码示例

import paddle

x = paddle.arange(24, dtype="float32").reshape((1, 2, 2, 2, 3))
print(x)
# Tensor(shape=[1, 2, 2, 2, 3], dtype=float32, place=Place(gpu:0), stop_gradient=True,
#        [[[[[0. , 1. , 2. ],
#            [3. , 4. , 5. ]],
#           [[6. , 7. , 8. ],
#            [9. , 10., 11.]]],

#          [[[12., 13., 14.],
#            [15., 16., 17.]],
#           [[18., 19., 20.],
#            [21., 22., 23.]]]]])

m = paddle.nn.Dropout3D(p=0.5)
y_train = m(x)
print(y_train)
# Tensor(shape=[1, 2, 2, 2, 3], dtype=float32, place=Place(gpu:0), stop_gradient=True,
#        [[[[[0. , 2. , 4. ],
#            [6. , 8. , 10.]],
#           [[12., 14., 16.],
#            [18., 20., 22.]]],

#          [[[0. , 0. , 0. ],
#            [0. , 0. , 0. ]],
#           [[0. , 0. , 0. ],
#            [0. , 0. , 0. ]]]]])

m.eval()  # switch the model to test phase
y_test = m(x)
print(y_test)
# Tensor(shape=[1, 2, 2, 2, 3], dtype=float32, place=Place(gpu:0), stop_gradient=True,
#        [[[[[0. , 1. , 2. ],
#            [3. , 4. , 5. ]],
#           [[6. , 7. , 8. ],
#            [9. , 10., 11.]]],

#          [[[12., 13., 14.],
#            [15., 16., 17.]],
#           [[18., 19., 20.],
#            [21., 22., 23.]]]]])