Python 3.x 运行LSTM自动编码器时出现内存错误
我正在设置一个具有多变量时间序列的LSTM自动编码器。我的每个序列都有不同的时间步(一个序列中大约有3000万步)和6个特征。我知道要给LSTM自动编码器输入一个序列,我必须将我的序列重塑为(1,3000万,6)。我以类似的方式重塑了我的9个序列。我想让自动编码器重建我的序列。然而,由于每个序列中有大量的时间步长,我的程序正在崩溃。如何解决此内存错误。即使我以批量大小提供数据,我的程序也会耗尽内存。我不熟悉机器学习和序列学习,请帮助我。我的网络连接如下: ` def重复_向量(args): 编码器\输入=输入(形状=(无,自。\输入\特征)) 编码器输出=LSTM(自身空间)(编码器输入) 解码器\输入=λ(重复\向量,输出\形状=(无,自。\潜在\空间))([编码器\输出,编码器\输入]) 解码器输出=LSTM(自输入单元格,返回序列=True)(解码器输入) self.\u autoencoder=型号(编码器输入,解码器输出) `Python 3.x 运行LSTM自动编码器时出现内存错误,python-3.x,keras,sequence,lstm,autoencoder,Python 3.x,Keras,Sequence,Lstm,Autoencoder,我正在设置一个具有多变量时间序列的LSTM自动编码器。我的每个序列都有不同的时间步(一个序列中大约有3000万步)和6个特征。我知道要给LSTM自动编码器输入一个序列,我必须将我的序列重塑为(1,3000万,6)。我以类似的方式重塑了我的9个序列。我想让自动编码器重建我的序列。然而,由于每个序列中有大量的时间步长,我的程序正在崩溃。如何解决此内存错误。即使我以批量大小提供数据,我的程序也会耗尽内存。我不熟悉机器学习和序列学习,请帮助我。我的网络连接如下: ` def重复_向量(args): 编码
我已经尝试通过hdf文件获取输入。我不确定您使用的是什么系统配置。OOM可以从软件和硬件两个方面解决。如果您使用的是4GB RAM和一些i5处理器(假设是intel)的系统,它可能无法工作。如果您正在使用GPU(可能性不大),那么这不应该是硬件问题 如果您的系统有图形卡,那么您可以稍微优化代码
嗨,谢谢你的回答。当我使用批量大小为1时,我的程序仍在运行OOM。我的功能数量已经很小(即4个)。我的序列的问题是时间步数太大(即3000万)。当我使用一个小序列(有10万个时间步)时,代码工作正常。我没有使用GPU。请尝试使用Google Colaboratory。它提供了一个免费的GPU实例。但在训练前不要关闭它。您可以转到运行时>更改运行时>硬件加速器>“使用GPU”。你可以在这里使用技巧检查colab嗨,我已经在colab上训练数据了。同样,由于时间步数的原因,它的内存不足。我是否应该将序列划分为子序列,然后将其交给lstm autoencoder?例如,如果我将序列(1,3000万,4)改为(10,300万,4),然后将其交给LSTM。但是,它会放松子序列之间的时间依赖性吗?如果是,我如何保持序列之间的依赖关系?我建议不要增加时间步长,而是打破完整的序列。在可管理的部分。在第一部分训练,然后在第二部分训练相同的模型,依此类推。这就是迁移学习。确保按时间顺序输入系列的这些部分。每次训练后,你必须保存重量,然后在第二部分训练时重新加载重量
[layer_to_repeat, sequence_layer] = args
return RepeatVector(K.shape(sequence_layer)[1])(layer_to_repeat)