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。
参数:
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。
异常:
TypeError - num_true 和 num_sampled 都不是int。
TypeError - unique 不是bool。
TypeError - range_max 和 seed 都不是int。
TypeError - true_classes 不是Tensor。
- 支持平台:
Ascend
样例:
>>> 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]