我试图按照此处的教程使用 TensorFlow 为 Word2Vec 模型构建一个简单的负采样器。
据我了解,将tf.random.log_uniform_candidate_sampler()
要从采样中排除的正确类、要返回的样本数量以及要采样的分布大小作为输入。
在教程中true_classes
,range_max
是 1、8 和num_ns
4。这意味着“从分布 [0, 8) 返回 4 个样本,但跳过 1,因为它是一个正类。”
但是,在本教程中,采样器返回以下张量:tf.Tensor([2 1 4 3], shape=(4,), dtype=int64)
.
我的问题是,为什么采样器返回类 1,即使在被告知排除它之后,因为它不构成负样本?
此外,在本教程的以下部分:
target_index : 7
target_word : sun
context_indices : [1 2 1 4 3]
context_words : ['the', 'wide', 'the', 'shimmered', 'road']
label : [1 0 0 0 0]
我们可以清楚地看到类 1 的第一个实例(in 中的索引 0 context_indices
)已被标记为正 skip-gram,而 1 的第二个实例(in 中的索引 2 context_indices
)已被标记为负 skip-gram。
我希望对我对这个模型或教程的理解进行一些澄清或更正。
谢谢!