【问题标题】:What is the relationship between batch size, timestep and error in LSTM (Keras)?LSTM(Keras)中批量大小、时间步长和误差之间的关系是什么?
【发布时间】:2020-06-08 06:54:17
【问题描述】:

让,

Sample Size = 100 (X1,X2,...,X100)

Timesteps = 5

Input Feature = 10

误差计算:

batch size = Sample size时,误差如何计算? 我的理解:我会将X1,X2,X3,X4,X5插入LSTM并在5时间步之后得到输出,比如Y1

错误E1 = X6 - Y1。同样我会计算E2,E3,...,E95

Actual Error = E1+E2+....+E95。这将用于更新权重。

对吗?

批次错误:

基于以上理解。如果batch size = 10。那么只有E1,E2,E3,E4 and E5 将用于计算实际误差。这将用于更新权重。

有状态 LSTM 中的批处理:

批次允许模型允许并行性,其中批次中的每个实体计算其误差,然后将所有误差相加。如果 LSTM 是有状态的,LSTM 如何实现批次内的并行性(前一个序列的隐藏状态用于初始化下一个序列的隐藏状态,这个对 Satetful 的理解是否正确?)?

参考资料:

LSTM Batches vs Timesteps

Understanding Keras LSTMs: Role of Batch-size and Statefulness

doubts regarding batch size and time steps in RNN

【问题讨论】:

  • 不要多问!
  • 前 3 个问题已链接。第四个可能是单独的。编辑 1:现在应该更有意义了

标签: python keras lstm recurrent-neural-network lstm-stateful


【解决方案1】:

批量大小对 LSTM 的影响:对于批量大小 1,模型在每个时间步采用 1 个输入。对于批量大小为 n,模型在每个时间步接受 n 个输入

问题中提到的误差计算部分:是batch size 1的误差计算。

一个批次的误差:将批次中每个元素的误差相加得到最终误差

Stateful LSTM 中的批处理:我对并行性的理解不正确。并行是在批处理中完成的,而不是在它们之间。

【讨论】:

  • 谢谢。因此,如果我理解正确:时间步(输入数据的暗淡 1)是 RNN 的长度; batch_size(输入数据的暗淡 0)是同时计算的运行次数(并行性)。如果我设置 stateful=True,我将在批次之间传播“内存”隐藏数据,而不是在批次内传播。因此,如果我想训练一个完美的有状态 RNN,我应该将时间步设置为硬件允许的最高值,并且 batch_size = 1?这是正确的吗?
猜你喜欢
  • 2018-04-24
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 2018-02-06
  • 2019-06-11
  • 2020-08-24
相关资源
最近更新 更多