首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >理解Keras LSTM中的参数return_sequences和return_state

理解Keras LSTM中的参数return_sequences和return_state

作者头像
故事尾音
发布于 2019-12-18 16:32:26
发布于 2019-12-18 16:32:26
2.6K0
举报

今天才注意到LSTM的output和hidden_state是同一个东西!下面分情况讨论参数的设置问题。

return_sequences=False && return_state=False

代码语言:javascript
复制
h = LSTM(X)

Keras API 中,return_sequences和return_state默认就是false。此时只会返回最后一个LSTM的hidden state 值。

return_sequences=True && return_state=False

输出全部时间步LSTM的hidden state结果。

return_sequences=False && return_state=True

代码语言:javascript
复制
lstm1, state_h, state_c = LSTM(1, return_state=True)

stm1 和 state_h 结果都是 hidden state。在这种参数设定下,它们俩的值相同。都是最后一个时间步的 hidden state。 state_c 是最后一个时间步 cell state结果。

return_sequences=True && return_state=True

代码语言:javascript
复制
lstm1, state_h, state_c = LSTM(1, return_sequences=True, return_state=True)

此时,我们既要输出全部时间步的 hidden state ,又要输出 cell state。lstm1 存放的就是全部时间步的 hidden state。state_h 存放的是最后一个时间步的 hidden state,state_c 存放的是最后一个时间步的 cell state 举一个输出例子,假设我们输入的时间步 time step=3:

代码语言:javascript
复制
[array([[[-0.02145359],
        [-0.0540871 ],
        [-0.09228823]]], dtype=float32),
 array([[-0.09228823]], dtype=float32),
 array([[-0.19803026]], dtype=float32)]

可以看到state_h 的值和lstm1的最后一个时间步的值相同。

Reference

  1. https://blog.csdn.net/u011327333/article/details/78501054
  2. Understand the Difference Between Return Sequences and Return States for LSTMs in Keras
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • return_sequences=False && return_state=False
  • return_sequences=True && return_state=False
  • return_sequences=False && return_state=True
  • return_sequences=True && return_state=True
  • Reference
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档