tf.random.fixed_unigram_candidate_sampler进行负例采样

在不少任务中需要进行负例采样来降低训练难度,加速训练

下面讲一下tensorflow中的负例采样函数

sampled_ids, true_expected_count, sampled_expected_count = tf.random.fixed_unigram_candidate_sampler(
       true_classes = V,          # 待采样真实数据,通常是数据ID完整集,比如词ID
       num_true = vocab_size,     # 待采样真实数据类别总数,如词表大小
       num_sampled = NEGATIVE_N,  # 采样个数
       unique = False,            # 随机样本是否唯一,通常是False,可以重复出现
       range_max = vocab_size,    # 随机最大的数
       unigrams = list(count_dic.values())  # 采样概率,如词表中每个词出现的频率作为对应概率,长度要和V一致
    ) 

返回值

sampled_ids:随机产生的采样数据,是V中对应数据的index

true_expected_count:期望的各值的概率分布

sampled_expected_count:真实产生的数据各值的概率分布

拿到sampled_ids之后可以reshape成自己想要的格式,如 batch_size * seq_len * r

你可能感兴趣的:(Tensorflow,NLP)