You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

理解tf.random.log_uniform_candidate_sampler中true_classes参数的作用

tf.random.log_uniform_candidate_sampler 中 true_classes 参数的具体含义

true_classes 用来传入当前训练批次中每个样本对应的真实正类的索引值,参数形状要求为 [batch_size, num_true],和你传入的num_true参数(每个样本对应的正类数量)对应。

它的核心作用有两个:

  • 用于计算损失校正所需的预期采样概率
    这个函数除了返回采样得到的候选类别列表外,还会返回两个校正值:sampled_candidates_expected_prob 和 true_classes_expected_prob,这两个值是用来校正采样版交叉熵损失的核心参数——因为负采样是从全量类别中抽样计算损失,不是遍历全类别,需要根据每个类别被抽中的概率修正损失值,避免最终训练结果出现偏差,而这两个校正值的计算完全依赖你传入的true_classes。
    你测试时只观察了返回的采样类别列表,这部分采样逻辑遵循对数均匀分布,本身和true_classes无关,所以看起来不管传入什么值,采样结果都"正常",但如果要将采样结果用于模型训练计算损失,true_classes传入错误会直接导致损失计算不准,模型无法正常收敛。
  • 可选控制正类是否出现在采样结果中
    当你设置参数remove_accidental_hits=True时,函数会自动从采样得到的负样本列表中剔除和true_classes一致的类别,避免正类被当成负样本参与损失计算,这一逻辑也完全依赖传入的true_classes值。如果开启这个参数再做测试,就能直观看到true_classes对采样结果的影响。

在word2vec的训练场景中,教程里传入的context_class就是当前中心词对应的真实上下文正类,符合参数的设计用途。

内容的提问来源于stack exchange,提问作者user746461

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 02:36:03