mindspore.ops.LogUniformCandidateSampler
- class mindspore.ops.LogUniformCandidateSampler(num_true=1, num_sampled=5, unique=True, range_max=5, seed=0)[源代码]
使用log-uniform(Zipfian)分布对一组类别进行采样。
该操作从整数范围[0, range_max )中随机采样一个采样类( sampled_candidates )的Tensor。
更多参考详见
mindspore.ops.log_uniform_candidate_sampler()
。警告
Ascend后端不支持随机数重现功能, seed 参数不起作用。
- 参数:
num_true (int,可选) - 每个训练样本的目标类数。默认值:
1
。num_sampled (int,可选) - 随机采样的类数。默认值:
5
。unique (bool,可选) - 确认批处理中的所有采样类是否都是唯一的。如果 unique 为
True
,则批处理中的所有采样类都唯一。默认值:True
。range_max (int,可选) - 可能的类数。当 unique 为
True
时, range_max 必须大于或等于 num_sampled 。默认值:5
。seed (int,可选) - 随机种子,必须是非负。默认值:
0
。
- 输入:
true_classes (Tensor) - 目标类,其数据类型为int64,shape为 \((batch\_size, num\_true)\) 。
- 输出:
3个Tensor组成的元组。
sampled_candidates (Tensor) - shape为 \((num\_sampled,)\) 且数据类型与 true_classes 相同的Tensor。
true_expected_count (Tensor) - shape与 true_classes 相同且数据类型为float32的Tensor。
sampled_expected_count (Tensor) - shape与 sampled_candidates 相同且数据类型为float32的Tensor。
- 支持平台:
Ascend
CPU
样例:
>>> import numpy as np >>> from mindspore import Tensor, ops >>> sampler = ops.LogUniformCandidateSampler(2, 5, True, 5) >>> output1, output2, output3 = sampler(Tensor(np.array([[1, 7], [0, 4], [3, 3]]))) >>> print(output1, output2, output3) [3 2 0 4 1] [[0.92312991 0.49336370] [0.99248987 0.65806371] [0.73553443 0.73553443]] [0.73553443 0.82625800 0.99248987 0.65806371 0.92312991]