TensorFlow函数:tf.nn.nce_loss

功能:计算并返回噪声对比估计(NCE, Noise Contrastive Estimation)训练损失。

tf.nn.nce_loss(
    weights,
    biases,
    labels,
    inputs,
    num_sampled,
    num_classes,
    num_true=1,
    sampled_values=None,
    remove_accidental_hits=False,
    partition_strategy='mod',
    name='nce_loss'
)
参数 必要 类型 说明
weights 张量 shape为[num_classes, dim]
biases 张量 类偏差,shape为[num_classes]
labels int64 目标类shape[batch_size, num_true]
inputs 张量 输入网络的正向激活shape [batch_size]
num_sampled int 每批随机抽样的类数
num_classes int 可能的类数
num_true int 每个训练示例的目标类数
sampled_values 元组 采样出的负样本,由* _candidate_sampler函数返回
remove_accidental_hit bool 是否删除“意外命中”
partition_strategy string 分区策略
name string 操作名称

这里值得一提的是:

  1. 如果 len(params) > 1,ids 的每个元素 id 根据 partition_strategy 在 params 元素之间被分区。
    如果 partition_strategy 是 “mod”,我们将每个 id 分配给分区 p = id % len(params).例如,13个 id 分为5个分区:[[0, 5, 10], [1, 6, 11], [2, 7, 12], [3, 8], [4, 9]]
    如果 partition_strategy 是 “div”,我们以连续的方式将 id 分配给分区.在这种情况下,13 个 id 分为5个分区:[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10], [11, 12]]
  2. 如果sampled_values是None,我们默认为log_uniform_candidate_sampler)
  3. 通过_compute_sampled_logits 函数计算出正样本和采样出的负样本对应的output和label
  4. 通过 sigmoid cross entropy来计算output和label的loss,从而进行反向传播

你可能感兴趣的:(tensorflow)