【发布时间】:2021-06-05 15:48:40
【问题描述】:
我目前正在尝试实现一个变压器,但无法理解它的损耗计算。
我的编码器输入查找 batch_size=1 和 max_sentence_length=8,如:
[[Das, Wetter, ist, gut, <blank>, <blank>, <blank>, <blank>]]
我的解码器输入看起来像(德语到英语):
[[<start>, The, weather, is, good, <end>, <blank>, <blank>]]
假设我的转换器预测了这些类别概率(仅显示类别概率最高的类别的单词):
[[The, good, is, weather, <end>, <blank>, <blank>, <blank>]]
现在我使用以下方法计算损失:
loss = categorical_crossentropy(
[[The, good, is, weather, <end>, <blank>, <blank>, <blank>]],
[[The, weather, is, good, <end>, <blank>, <blank>, <blank>]]
)
这是计算损失的正确方法吗?我的转换器总是预测下一个单词的空白标记,我认为这是因为我的损失计算有误,在计算损失之前必须对空白标记做一些事情。
【问题讨论】:
标签: machine-learning nlp transformer language-model