LSTM批次大小和序列长度如何影响内存

时间:2018-07-27 02:17:30

标签: tensorflow machine-learning lstm rnn

我对批次大小和序列长度有疑问。假设我有10个不同的独立时间序列,每个序列的长度为100。

5个人从事一项活动,而其他5个人从事另一项活动。

我想创建一个LSTM,它将能够记住每个序列中的第一个样本的所有序列,并对我输入到一个活动或另一个活动中的测试样本进行分类。

现在,首先尝试输入一个长度为100的测试样本。我该怎么做?我要创建一个LSTM,然后一次性输入[10,100,1]形状的数据吗?还是将10,[100、1]形状的数据输入10次?这里的问题是,批处理是否会影响LSTM如何记住过去的输入?我不想让LSTM记住独立序列之间的时间,但是我希望它能记住从每个时间序列开始一直的所有方式。

第二,假设我现在想对用于训练LSTM的序列进行分块。目标保持不变。因此,现在我将序列分成10个大块。是否为每个序列都以[10,10,1]的形式输入?如果我这样做,LSTM会一直记住该序列的时间动态变化吗?以这种方式进行LSTM是否类似于不对序列进行分块和完整地输入?

1 个答案:

答案 0 :(得分:0)

我可以回答您与批处理有关的部分问题。批处理有两个原因。

  1. 计算机批量执行矩阵乘法会更高效。如果在CPU上进行处理,则部分效率来自能够缓存矩阵,而不必从内存中重新加载。在评估过程中,批次中的序列不会相互干扰。就像每个单独计算一样。
  2. 训练期间,成批具有多个序列可减少梯度中的噪声。通过平均批次中所有序列的梯度来计算权重更新。拥有更多序列可以更可靠地估计参数向哪个方向移动,以改善损失函数。