【发布时间】:2020-11-05 01:17:07
【问题描述】:
我正在研究从英语到德语的句子翻译问题。 所以最终的输出是一个德语序列,我需要检查我的预测有多好。
我在 tensorflow 教程中发现了以下损失函数:
loss_object = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True, reduction='none')
def loss_function(real, pred):
mask = tf.math.logical_not(tf.math.equal(real, 0))
loss_ = loss_object(real, pred)
mask = tf.cast(mask, dtype=loss_.dtype)
loss_ *= mask
return tf.reduce_mean(loss_)
但我不知道这个函数是做什么的。我知道(也许我错了)我们不能以直接的方式将 SparseCategoricalCrossentropy 用于序列,我们必须进行某种操作。 但是例如在上面的代码中,我看到 SparseCategoricalCrossentropy 在序列输出中以直接的方式使用。为什么?
mask 变量有什么作用?
能解释一下代码吗?
编辑:教程-https://www.tensorflow.org/tutorials/text/nmt_with_attention
【问题讨论】:
标签: tensorflow deep-learning loss-function