深入理解keras LSTM

本文的参考:https://www.jianshu.com/p/0c65b47cd6fb
https://machinelearningmastery.com/return-sequences-and-return-states-for-lstms-in-keras/

1 LSTM

关于LSTM的介绍.
LSTM
对于每一个LSTM block 输出有两个 c t c_t ct h t h_t ht,但是,在keras中的LSTM模型中,只有一个输出值 h t h_t ht。因此,我们接下来要探索以下keras中的LSTM模型。

2 深入理解Return Sequences and Return States for LSTMs in Keras

在keras LSTM的文档中有两个参数

  • return_sequences: Boolean. 是否返回最后一个输出或是整个序列的输出,默认是False
  • return_state: Boolean. 是否在输出之外返回状态,默认是False

1.return_sequences=False && return_state=False

h = LSTM(6)

此时返回的对输入数据进行计算得到的a,如果X有多个timestep,则返回最后一个timestep的a

2.return_sequences=True && return_state=False

LSTM(6, return_sequences=True)

此时返回的是全部timestep的a

3.return_sequences=False && return_state=True

lstm1, state_h, state_c = LSTM(6, return_state=True)

lstm1, state_h是最后一个timestep的a,state_c是最后一个timestep的c

4.return_sequences=True && return_state=True

lstm1, state_h, state_c = LSTM(6, return_sequences=True, return_state=True)

lstm1是全部timestep的a,

state_h是最后一个timestep的a,

state_c是最后一个timestep的c

同样道理,GRU的输出也是这样的

3 深入理解Keras LSTM的stateful

stateful: Boolean (default False). If True, the last state for each sample at index i in a batch will be used as initial state for the sample of index i in the following batch.

使RNN具有状态意味着每批样品的状态将被重新用作下一批样品的初始状态。
当使用有状态 RNN 时,假定:

  • 所有的批次都有相同数量的样本
  • 如果x1x2是连续批次的样本,则x2[i]是x1[i]的后续序列,对于每个i

要在 RNN 中使用状态,你需要:

  • 通过将batch_size参数传递给模型的第一层来显式指定你正在使用的批大小。例如,对于10个时间步长的32样本的batch,每个时间步长具有16个特征,batch_size = 32

  • 在RNN层中设置stateful = True

  • 在调用fit()时指定shuffle = False
    在这里插入图片描述

  • 假设Timestep=5,batch_size=2

  • X1和X2就是连续的两个批次,X2[i]是X1[i]的后续序列,也就是说,床前明月光后面是疑是地上霜

  • 光的状态会传递到疑作为初始状态,也就是用光输出的(h, c)来初始化疑的(h, c)

  • 那就不难理解为什么“所有的批次都有相同数量的样本”,如果不同批次的样本数不同,那上一批次传过来的(h, c)将没人接手

  • 进而,Keras文档说用stateful需要指定batch_size也没毛病,不指定的话,Keras默认容忍最后一个批次样本数不同。例如,samples=9,batch_szie=2,那么默认分成5批,最后一批只有1个样本

下一个问题,shuffle

  • shuffle = True会在每个epoch开始之前打乱训练集数据顺序,使用stateful LSTM肯定要设置shuffle = False,不然光可能传给汗不就乱套了
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值