如何结合两个Crossentropies

时间:2016-06-13 19:21:14

标签: tensorflow

基于seq2seq模型中的损失函数(" sequence_loss_by_example" - context here here.py)我试图重视实值估计器的成本。我希望模型猜测可能在规模上变化很大的实际值。

现在,我的问题是:你能否反馈两种交叉熵的组合是否与我实施它们的方式有关。我可以添加它们然后添加它们吗?

for logit, target, weight in zip(logits, targets, weights):
    real_target   = target[:, 0:11]
    real_logit    = logit[:, 0:11]
    anteil_target = target[:, 11:]
    anteil_logit  = logit[:, 11:]

    total_size += 1.1 * weight
    crossent          = weight * nn_ops.softmax_cross_entropy_with_logits(real_logit, real_target, name="main_bits_loss")
    crossent_anteil   = 0.1 * weight * nn_ops.softmax_cross_entropy_with_logits(anteil_logit, anteil_target, name="anteil_bits_loss")

    log_perp_list.append(crossent)
    log_perp_list.append(crossent_anteil)

log_perps = math_ops.add_n(log_perp_list) / total_size

return log_perps

而且:要调试,我该如何给这个张量命名?

real_target   = target[:, 0:11]

类似的东西:

real_target   = target[:, 0:11]
real_target.name('name_goes_here')

一堆 菲利普

1 个答案:

答案 0 :(得分:1)

[:,0:11]表示法在内部调用tf.slice(),它确实采用了name参数。在你的情况下,你应该能够做这样的事情:

real_target = tf.slice(target, [0, 0], [-1, 11], name="real_target")