我设置了一个自动编码器LSTM与多元时间序列。我的每一个序列都有不同的时间步长(一个序列中近3000万步)和6层的特性。我知道,得到一种序列为输入到自动编码器LSTM,我要重塑我的序列(1,30million,6).I重塑所有我的9个序列以类似的方式。我想自动编码器重建我的序列。但是我的程序崩溃是由于大量的每个序列中的时间步长。我该如何解决这个内存错误。即使我在批量给数据,我的程序运行内存。我是新来的机器学习和序列学习,所以请帮我same.My网络连接如下:`
DEF repeat_vector(参数):
[layer_to_repeat, sequence_layer] = args
return RepeatVector(K.shape(sequence_layer)[1])(layer_to_repeat)
encoder_input =输入(形状=(无,self._input_features))
encoder_output = LSTM(self._latent_space)(encoder_input)
decoder_input =拉姆达(repeat_vector,output_shape =(无,self._latent_space))([encoder_output,encoder_input])
decoder_output = LSTM(self._input_cells,return_sequences =真)(decoder_input)
self._autoencoder =模型(encoder_input,decoder_output)`
我已经尝试通过HDF文件采取输入。
我不知道你使用的是什么系统配置。奥姆斯可以从软件和硬件端来解决。如果您使用的是有发言权4GB内存的系统和一些i5处理器(假设它是英特尔),它可能无法正常工作。如果你是在GPU上的工作(这是不太可能。)它不应该是硬件问题。
如果你的系统有一个图形卡,那么,你可以优化的代码位。
- 尝试的1批次大小。
- 如果你有一个预处理队列等尝试调整队列的大小。
- 我建议你去之前在为完整的东西,一旦尝试一下本作较小的系列,并检查是否正常工作。
- 如果你花时间步长要大,它将会失去精度,如果它太小了,还有那么它的重来计算。检查他们中的每一个,如果时间步长可以增加,而对精度太多妥协。
- 您可以使用PCA对于了解的重要特征,降低维数。您也可以使用随机森林作为一个预处理步骤,以了解该功能的重要性,并减少与少inportance的功能。