2016-11-18 34 views
0

我正在嘗試編寫一個以可變長度句子作爲輸入的動態rnn。我對如何計算交叉熵損失感到困惑。計算張量流中基於句子的語言模型的序列損失

像sequence_loss_by_example和sparse_softmax_cross_entropy_with_logits這樣的Tensorflow方法似乎需要兩個參數,網絡的輸出logits和目標標籤。

我很困惑這些目標標籤的形狀。看來這兩件事的尺寸應該匹配。在我目前的實現中,我的輸入將是,例如[word1,word2,word3,句子結束標記]。在這種情況下,我似乎無法弄清楚我的目標標籤會是什麼樣子。看起來他們會是相同的,但在這種情況下,它看起來像我只是預測了我作爲輸入獲得的詞。所以這感覺不對。我在這裏錯過的任何明顯的東西?

還有一個問題:我有一個未知詞彙,用於詞彙表外的單詞。在計算損失時,像處理其他單詞一樣對待這個令牌是否是一個問題?或者我應該以某種方式增加預測未知單詞的成本?

+0

如果我理解正確,在語言模型中定義損失的一種方法是預測下一個單詞, be [word2,word3] – sygi

+0

Hrm,所以第一個單詞不會被預測?句子標記的結尾也不會被預測嗎? – Boris

+0

您可以預測第一個單詞,例如傳遞[START,word1,word2,word3]並預測EOS令牌 - 輸出將是[w1,w2,w3,EOS] – sygi

回答

0

設置一個更大的規模和墊的剩餘空間用零或任何特殊字符,而您可以在以後設置的模板的權重爲0

例:[字詞1,word2和WORD3,最終OF-句子標記,PAD_word,PAD_word,PAD_word,PAD_word,...,PAD_word]