2017-01-23 70 views
0

我正在嘗試理解和實施LSTM。我明白他們需要定義一個序列長度T,並且批量執行訓練。所以我們給網絡提供了幾個長度爲T的序列。現在LSTM需要一個先前的狀態作爲輸入,據我所知,它被初始化爲零。我的問題是,每個序列後狀態都重置爲零?例如我有一個序列1,狀態向量在這個序列中繼續前進,然後我將它置於下一個序列的零處?還是將它帶到下一個序列2?如果是這樣,那麼對於不相關的序列如何處理呢?例如我有來自2個不同文本的樣本,並且將狀態從文本1轉換爲文本2是沒有意義的;這在實踐中如何處理? 關於測試時間,狀態向量初始化爲零並且對整個序列執行,還是在每個子序列之後復位?在培訓和測試期間重置LSTM中的狀態

注:我把這個標籤也Tensorflow,因爲是我使用的框架,也許有人從那裏可以幫我還。

回答

0

在Tensorflow,我95%肯定對每個序列的起始狀態復位至零爲您的批量和批次之間的每一個元素。 (5%,因爲 「永不說永不」 的規則:)

編輯:

我也許應該進一步談。 Tensorflow如何工作,它首先構建一個圖形,然後將數據推送到其中。當你看到你構造的循環圖時,我相信你會看到它的頭部(第一個狀態)連接到零,這意味着每當你通過圖表推動數據時(例如通過sess.run()),它會從零發生器得到一個新的零點,因此如果忘記了它以前的運行狀態。