2017-06-22 23 views
1

我是tensorflow的初學者。 我想通過使用this tutorial來研究tensorflow。Tensorflow r.1.1中的TrainingHelper和GreedyEmbeddingHelper是否有區別(預測結果不同)?

閱讀本教程後,我想通過使用我的數據(韓國標題進行標記)運行此代碼。 在訓練模型中(使用TrainingHelper),預測結果似乎沒問題。 但在推理模型中(使用GreedyEmbeddingHelper),預測結果非常糟糕(即使使用列車數據)。它看起來像第一個時代的訓練模型預測。 有沒有區別TrainingHelperGreedyEmbeddingHelper

我認爲教程和我的代碼之間的區別只是超參數。

回答

2

TrainingHelper用於培訓時,解碼器RNN(的其中一個)輸入是前一時間步的基本事實。由於在推論時間內地面事實不可用,因此您需要輸入前一時間步驟的解碼器輸出。

例如,考慮目標句子「我喜歡披薩」。在訓練時,解碼單詞「匹薩」時,解碼RNN將接收以下輸入:

  1. 上一時間步的基礎事實,例如嵌入單詞「like」(使用目標嵌入)。
  2. 來自上一時間步驟的上下文。
  3. 從上一個時間步的隱藏狀態。

在推理時,解碼RNN將仍然接收2和3.然而,代替地面實況,它將從前一時間步取得解碼器輸出(單熱編碼等於目標詞彙表,例如解碼器在前一時間步驟所猜測的詞),通過目標嵌入運行,並將其用作輸入。

+0

感謝您的解釋和例子。正如我理解你的解釋,我想我需要更多的學習數據或訓練時間來預測下一個正確的單詞。非常感謝^^ –

+0

對不起,這個。是否可以使用GreedyDecoder而不是TrainingHelper來處理特定情況?我意識到訓練將會放慢......這是否可行?請參閱:https://stackoverflow.com/questions/48256372/neural-machine-translation-model-predictions-are-off-by-one –

0

分鐘28在這個Tensorflow summit talk提供了一些幫助類的顏色。正如Brian的回答中所提到的那樣 - GreedyEmbeddingHelper用於預測時間,當地面實況不可用作輸入時。但是你也可以看看ScheduledEmbeddingTrainingHelper,如果你想在訓練時間更細微的幫手

相關問題