Neural network 训练时间LSTM Keras取决于数据集的大小

Neural network 训练时间LSTM Keras取决于数据集的大小,neural-network,keras,lstm,Neural Network,Keras,Lstm,我目前正在尝试用Keras实现的LSTM进行时间序列预测 我尝试训练一个LSTM模型,在训练中有10000个样本,在测试中有2500个样本。我使用的批量大小为30 现在,我正在尝试训练完全相同的模型,但是需要更多的数据。我有一列10万个样品的火车,还有25000个样品的测试 使用大数据集时,一个历元的时间乘以100 即使我有更多的数据,批量大小也是相同的,因此培训不应该花费更多的时间。这是否可能是需要花费大量时间的列车损失计算和测试数据(此处使用所有数据) 关于批量大小:因为我有更多的数据,我应

我目前正在尝试用Keras实现的LSTM进行时间序列预测

我尝试训练一个LSTM模型,在训练中有10000个样本,在测试中有2500个样本。我使用的批量大小为30

现在,我正在尝试训练完全相同的模型,但是需要更多的数据。我有一列10万个样品的火车,还有25000个样品的测试

使用大数据集时,一个历元的时间乘以100

即使我有更多的数据,批量大小也是相同的,因此培训不应该花费更多的时间。这是否可能是需要花费大量时间的列车损失计算和测试数据(此处使用所有数据)

关于批量大小:因为我有更多的数据,我应该把它放得更高吗

编辑1

我试着改变批量大小,放一个更大的。当我这样做的时候,训练的时间减少了很多。 对于大批量,梯度的计算应该比小批量的长

我这里没有线索,我真的不明白为什么会发生这种情况

有人知道为什么会这样吗?它是否与我使用的数据相关联?从理论上讲,这怎么可能发生

编辑2

我的处理器是Intel Xeon W3520(4颗心/8个线程),内存为32G。 数据由长度为6的序列和4个特征组成。我使用一个50单元的LSMT层和一个密集的输出层。无论我是用10000个样本还是100000个样本进行训练,都是批量大小改变了计算时间。我可以从批量大小为1000的一个历元的2秒到批量大小为30的200秒


我不使用生成器,我使用代码的基本行
model.fit(Xtrain,Ytrain,nb_epoch,batch_size,verbose=2,callbacks,validation_data=(Xtest,Ytest))
callbacks=[earlysting(monitor='val_loss',patience=10,verbose=2),history]
你似乎误解了SGD的部分功能(随机梯度下降)有效。 ,这可能有助于你更好地理解这一点,但我会花时间在这里再次解释

梯度下降的基本思想是计算所有trainig样本的前向传递(并存储激活),然后更新权重一次。现在,因为您可能没有足够的内存来存储所有激活(计算反向传播梯度所需),并且由于其他原因(),通常无法执行经典的梯度下降

随机梯度下降假设,通过按随机顺序采样,每次只查看一个训练样本,然后在
之后直接更新,即可达到收敛。这称为迭代,而我们称通过所有训练样本的过程为历元
小批量现在只改变新加坡元,而不是使用一个单一的样本,取“少数”值,由批量大小决定


现在,权重的更新是一个非常昂贵的过程,在这一点上应该清楚,大量更新权重(使用SGD)比计算梯度和仅更新几次(使用大批量)的成本更高.

瓶颈可能是将批处理数据输入到计算单元…IO在神经网络中可能是一个瓶颈,因此较大的批处理大小意味着您输入更多数据,计算需要足够的时间来输入下一批数据,使其达到最佳状态。您能否向我们提供有关您用于计算的设备的信息?以及da的大小ta可能会对我有用(功能的数量等)。您是否也可以提供有关您输入这些数据的方式的信息?在内存中还是用生成器读取?感谢各位的回答!我用您所获取的信息编辑了我的问题。我将按照您给我的方向进行研究。