LSTM怎么用于实际项目

最近由于项目需要,需要使用LSTM进行时间序列预测,由此通过这篇文件,回忆并总结下LSTM的一些关键性问题。

一、LSTM原理:

1、一句话总结LSTM
LSTM即是长短期记忆网络

2、LSTM中门和时间步

门和时间步的概念
   -- LSTM的中有四个门,每个门负责是否把短期记忆纳入长期记忆中(或者说负责将短期记忆的某一部分是否纳入长期记忆)
   -- 每个时间步,都是网络的一个瞬时状态(cell)
   
样本和时间步的联系
   -- 样本最小批次长度 = 时间步个数
   -- 具体流程是:
      -- 设样本总数是N,时间步数为t
      -- 将样本按时间线从上到下排序,然后分为 N/t 批次 ,每批次长度为t

二、LSTM 返回值分析:

1、state_h
即是hidden state ,即是短期记忆输出;
   -- 它的一部分内容最终会增强或者遗忘后,加入到长期记忆中,成为长期记忆的一部分;
   -- 同时长期记忆的内容state_c也会在第四道门输出门处影响最终输出state_h

2、state_c
即是cell state,即是长期记忆依赖
-- return_sequences和return_state默认就是false

3、return_sequences=False && return_state=False
   -- 返回:只返回最后一个时间步的state_h的值

4、return_sequences=True && return_state=False
   -- 返回:输出的hidden state 包含全部时间步的结果

5、return_sequences=False && return_state=True
   -- 返回:最后一个时间步的 hidden state。最后一个时间步 cell state结果。

6、return_sequences=True && return_state=True
   -- 返回:lstm1 存放的就是全部时间步的 hidden state。state_h 存放的是最后一个时间步的 hidden state。state_c 存放的是最后一个时间步的 cell state
   
三、使用LSTM进行预测

究竟是使用短期记忆的输出还是长期记忆的输出?

1、后面如果使用全连接层+softmax
一般设置:return_sequences=False,即是只输出最后一个时间步的短期记忆输出作为最终输出

2、如果后面还接LSTM
则需要输出全部时间步的 hidden state作为下一个LSTM的输入

3、目前只碰到过这两种情况
有其他情况再接着补充(其实只要输出的维度,可以构建损失函数即可,具体看实际场景,能不能构建这样的损失函数)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值