mindspore.ops.Dropout
- class mindspore.ops.Dropout(keep_prob=0.5, Seed0=0, Seed1=0)[源代码]
Dropout是一种正则化手段,通过在训练中以 \(1 - keep\_prob\) 的概率随机将神经元输出设置为0,起到减少神经元相关性的作用,避免过拟合。
更多细节请参考
mindspore.ops.dropout()
。警告
Ascend后端不支持随机数重现功能, Seed0 和 Seed1 参数不起作用。
- 参数:
keep_prob (float,可选) - 输入神经元保留概率,数值范围在0到1之间。例如,keep_prob=0.9,删除10%的神经元。默认值:
0.5
。Seed0 (int,可选) - 算子层的随机种子,用于生成随机数。默认值:
0
。Seed1 (int,可选) - 全局的随机种子,和算子层的随机种子共同决定最终生成的随机数。默认值:
0
。
- 输入:
x (Tensor) - 输入Tensor,shape为 \((*, N)\),数据类型为float16、float32或float64。
- 输出:
output (Tensor) - shape和数据类型与 x 相同。
mask (Tensor) - 应用于 x 的掩码。
在GPU和CPU上, mask 具有与 x 相同的shape和数据类型。
在Ascend上,为了获得更好的性能,它被表示为一个具有Uint8数据类型的一维Tensor。其shape为 \((byte\_counts, )\) , 其中 \(byte\_counts\) 为覆盖 x 的shape所需的字节数。通过下面的公式计算 \(byte\_counts\) 大小:
\[byte\_counts = \text{ceil}(\text{cumprod}(x.shape) / 128) * 16\]若 x 的shape为 \((2, 3, 4, 5, 6)\) ,则 mask 的shape为 \((96, )\) 。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> import numpy as np >>> from mindspore import Tensor, ops >>> dropout = ops.Dropout(keep_prob=0.5) >>> x = Tensor(np.ones([1, 2, 3, 4, 5]), mindspore.float32) >>> output, mask = dropout(x) >>> print(output.shape, mask.shape, mask.dtype) (1, 2, 3, 4, 5) (16,) UInt8