运行LSTM自动编码器时出现内存错误



我正在设置一个具有多变量时间序列的LSTM自动编码器。我的每个序列都有不同的时间步长(一个序列中大约有3000万步)和6个特征。我知道要给LSTM自动编码器一个序列作为输入,我必须将我的序列重塑为(1300万,6)。我以类似的方式重新塑造了我所有的9个序列。我想让自动编码器重建我的序列。然而,由于每个序列中有大量的时间步长,我的程序正在崩溃。我该如何解决这个内存错误。即使我以批量大小提供数据,我的程序也会耗尽内存。我是机器学习和序列学习的新手,所以请帮助我。我的网络连接如下:`

def repeat_vector(args):

[layer_to_repeat, sequence_layer] = args
return RepeatVector(K.shape(sequence_layer)[1])(layer_to_repeat)

encoder_input=输入(shape=(无,self._input_features))

encoder_output=LSTM(self.latent_space)(encoder_input)

decoder_input=Lambda(repeat_vector,output_shape=(无,self.latent_space))([编码器输出,编码器输入])

decoder_output=LSTM(self._input_cells,return_sequences=True)(decoder_input)

自我_autoencoder=型号(encoder_input,decoder_output)`

我已经尝试过通过hdf文件进行输入。

我不确定您使用的是什么系统配置。OOM可以从软件和硬件两个方面解决。如果你使用的系统有4GB RAM和一些i5处理器(假设是英特尔),它可能不起作用。如果你在GPU上工作(这不太可能。)这不应该是硬件问题。

如果你的系统有一个图形卡,那么你可以对代码进行一些优化。

  1. 尝试批量大小为1
  2. 如果您有预处理队列等,请尝试调整队列大小
  3. 我建议你在做完整的事情之前,在一个较小的系列中尝试一下,并检查它是否有效
  4. 如果你把时间步长设置得太大,它就会失去精度;如果它太小,那么计算起来就很重。检查每个其中,如果时间步长可以增加,而不会造成太大损失关于精度
  5. 您可以使用PCA来了解重要特征并降低维度。您也可以使用随机林作为预处理步骤了解特征的重要性并减少特征重要

相关内容

  • 没有找到相关文章

最新更新