如何从 keras 中的双向 LSTM 中提取状态 c 和 h

Mau*_*ile 7 bidirectional keras

我正在尝试使用 Keras 函数式 API 训练 seq2seq 翻译器。以下代码工作正常:

encoder_inputs = Input(shape=(None, num_encoder_tokens))
encoder = LSTM(latent_dim, return_state=True)
encoder_outputs, state_h, state_c = encoder(encoder_inputs)
Run Code Online (Sandbox Code Playgroud)

我现在想尝试双向 LSTM。我的尝试:

encoder_inputs = Input(shape=(None, num_encoder_tokens))
encoder = Bidirectional(LSTM(latent_dim, return_state=True))
encoder_outputs, state_h, state_c = encoder(encoder_inputs)
Run Code Online (Sandbox Code Playgroud)

这将返回一个错误:

ValueError                                Traceback (most recent call last)
<ipython-input-25-6ae24c1319f3> in <module>()
  6 encoder = Bidirectional(LSTM(latent_dim, return_state=True))
  7 print(len(encoder(encoder_inputs)))
----> 8 encoder_outputs, state_h, state_c = encoder(encoder_inputs)
  9 
 10 # We discard `encoder_outputs` and only keep the states.

ValueError: too many values to unpack (expected 3)
Run Code Online (Sandbox Code Playgroud)

如何从双向 LSTM 中提取状态 c 和 h?

归档时间:

查看次数:

495 次

最近记录:

7 年,6 月 前