前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >理解Keras LSTM中的参数return_sequences和return_state

理解Keras LSTM中的参数return_sequences和return_state

作者头像
故事尾音
发布2019-12-18 16:32:26
1.9K0
发布2019-12-18 16:32:26
举报
文章被收录于专栏:NLP算法工程师之路

今天才注意到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 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 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 归档