我试图编写一个动态的rnn,它将可变长度的句子作为输入。我对如何计算交叉熵损失感到有些困惑。
像sequence_loss_by_example和sparse_softmax_cross_entropy_with_logits这样的Tensorflow方法似乎有两个参数,即网络的输出logits和目标标签。
我对这些目标标签的形状感到困惑。似乎这两件事的尺寸应该匹配。在我当前的实现中,我的输入将是,例如,[word1,word2,word3,end-of-sentence-token]。在这种情况下,我似乎无法弄清楚我的目标标签会是什么样子。看起来它们是完全相同的,但在这种情况下,看起来我只是在预测我作为输入的词。所以这感觉不对。我有什么明显的遗漏?
还有一个问题:对于词汇外单词,我有一个未知的标记。在计算损失时,像处理任何其他单词一样处理此令牌是一个问题吗?或者我应该以某种方式增加预测未知单词的成本?
答案 0 :(得分:0)
设置更大尺寸的模板,并用零或任何特殊字符填充剩余空格,以后可以将权重设置为0
Ex:[word1,word2,word3,end-of-sentence-token,PAD_word,PAD_word,PAD_word,PAD_word,....,PAD_word]