理解tensorflow sequence_loss参数

The*_*0s3 5 tensorflow

sequence_Loss模块的source_code有需要他们列出他们作为产出,目标和权重三个参数.

输出和目标是不言自明的,但我希望更好地理解weight参数是什么?

另一件让我感到困惑的事情是,它表明它targets应该length与输出相同,它们究竟是什么意思是张量的长度?特别是如果它是一个三维张量.

Chr*_*son 1

我们在课堂上使用了这个,我们的教授说我们可以只传递正确形状的(评论说“与 logits 长度相同的一维批量大小的浮点张量列表”)。这对理解他们的意思没有帮助,但也许它会帮助你让你的代码运行。为我工作。

这段代码应该可以解决问题[tf.ones(batch_size, tf.float32) for _ in logits]

编辑:来自 TF 代码:

for logit, target, weight in zip(logits, targets, weights):
      if softmax_loss_function is None:
        # TODO(irving,ebrevdo): This reshape is needed because
        # sequence_loss_by_example is called with scalars sometimes, which
        # violates our general scalar strictness policy.
        target = array_ops.reshape(target, [-1])
        crossent = nn_ops.sparse_softmax_cross_entropy_with_logits(
            logit, target)
      else:
        crossent = softmax_loss_function(logit, target)
      log_perp_list.append(crossent * weight)
Run Code Online (Sandbox Code Playgroud)

传递的权重乘以该特定 logit 的损失。所以我想如果你想格外认真地对待某个特定的预测,你可以将权重增加到 1 以上。