当使用双向包装器时,如何在LSTM层中获得最终隐藏状态和序列

jes*_*tio 6 python deep-learning keras

我按照https://machinelearningmastery.com/return-sequences-and-return-states-for-lstms-in-keras/中的步骤进行了操作 但是当谈到双向lstm时,我尝试了这个

lstm, state_h, state_c = Bidirectional(LSTM(128, return_sequences=True, return_state= True))(input)
Run Code Online (Sandbox Code Playgroud)

但它不会起作用.

是否有一些方法可以在使用双向包装器时获得LSTM层中的最终隐藏状态和序列

Yu-*_*ang 12

该呼叫Bidirectional(LSTM(128, return_sequences=True, return_state=True))(input)返回5个张量:

  1. 整个隐藏状态序列,默认情况下它是前向和后向状态的串联.
  2. h前向LSTM 的最后隐藏状态
  3. c前向LSTM 的最后一个单元状态
  4. h后向LSTM 的最后隐藏状态
  5. c后向LSTM 的最后一个单元状态

您发布的行会引发错误,因为您要将返回的值解压缩为三个变量(lstm, state_h, state_c).

要更正它,只需将返回的值解压缩为5个变量即可.如果要合并状态,可以将前向和后向状态与Concatenate图层连接起来.

lstm, forward_h, forward_c, backward_h, backward_c = Bidirectional(LSTM(128, return_sequences=True, return_state=True))(input)
state_h = Concatenate()([forward_h, backward_h])
state_c = Concatenate()([forward_c, backward_c])
Run Code Online (Sandbox Code Playgroud)

  • 谁能提供一下这个的文档吗,我找了没找到,谢谢 (2认同)