該模型具有LSTM作爲其第一層。Keras何時在調用model.predict時重置LSTM狀態?
當調用model.predict說你幾個樣品中傳遞:
>sam = np.array([ [[.5, .6, .3]], [[.6, .6, .3]], [[.5, .6, .3]] ])
>model.predict(sam)
array([[ 0.23589483],
[ 0.2327884 ],
[ 0.23589483]])
上面我們看到的映射:[3.5,0.6 .3] - > 0.23589483等(1元的序列,它是長度爲3的矢量,被映射爲實數)
該模型的input_length爲1,input_dim爲3.注意,第一個和最後一個是相同的並且具有相同的輸出(0.23589483)。所以我的假設是在Keras處理一個樣本(在這種情況下是一個1-3D矢量的序列)之後,它會重置模型的內存。那是每個序列基本上是獨立的。這種觀點有什麼不正確或誤導?
以input_length 3和input_dim 1爲例。這次切換序列中的值並查看不同的結果(將第二個列表與最後一個列表進行比較)。因此,隨着Keras處理一個序列,內存正在改變,但是當完成處理時,內存復位(第一個和第二個序列具有相同的結果)。
sam = np.array([ [[.1],[.1],[.9]], [[.1],[.9],[.1]], [[.1],[.1],[.9]] ])
model.predict(sam)
array([[ 0.69906837],
[ 0.1454899 ],
[ 0.69906837]])
上面我們看到的映射[[0.1],[1],[9]。] - > 0.69906837等(3個元素的序列的實數)
好吧,我同意的權重將不會改變。但是LTSM的內存/狀態呢?這不被認爲是「重量」,對吧?我想知道是否有實際轉儲LTSM狀態。 – yalis
好的,我明白了你的意思並編輯了我的答案。我希望它能回答這個問題。 –
@yalis能否使用'stateful = True'來看你想要的效果?如果需要,我可以提供一個工作示例。 –