我想通過Yang et al.使用關注機制的實現。我發現了一個使用這種注意力機制的自定義層的工作實現here。而不是使用我的LSTM的輸出值:在keras的LSTM中使用隱藏狀態而不是輸出
my_lstm = LSTM(128, input_shape=(a, b), return_sequences=True)
my_lstm = AttentionWithContext()(my_lstm)
out = Dense(2, activation='softmax')(my_lstm)
我想用LSTM的隱藏狀態:
my_lstm = LSTM(128, input_shape=(a, b), return_state=True)
my_lstm = AttentionWithContext()(my_lstm)
out = Dense(2, activation='softmax')(my_lstm)
但我得到的錯誤:
TypeError: can only concatenate tuple (not "int") to tuple
我嘗試了它與return_sequences組合,但我嘗試過的一切都失敗了。如何修改返回的張量以便像返回的輸出序列那樣使用它?
謝謝!
'return_state = True'只返回最後一個隱藏狀態,不是所有的隱藏狀態。所以即使你編輯了AttentionWithContext來處理你在'return_state = True'時得到的張量列表,我不認爲它會是你想要的。 –
@NicoleWhite好吧,那會是一個問題。我沒有看到它爲什麼只返回最後一個隱藏狀態的原因,但它是這樣。但我不得不懷疑:在大多數論文中他們都談論隱藏狀態。這真的是他們的意思嗎?或者他們只是使用錯誤的術語?我沒有看到使用隱藏狀態而不是輸出狀態的理由,但我想正確使用它們的方法。 – V1nc3nt
當你說輸出狀態時,你指的是什麼? –