【问题标题】:Memory error while running LSTM Autoencoders运行 LSTM 自动编码器时出现内存错误
【发布时间】:2019-01-31 16:06:59
【问题描述】:

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

定义重复向量(args):

 [layer_to_repeat, sequence_layer] = args

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

encoder_input = Input(shape=(None, self._input_features))

encoder_output = LSTM(self._latent_space)(encoder_input)

decoder_input = Lambda(repeat_vector, output_shape=(None, self._latent_space))([encoder_output, encoder_input])

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

self._autoencoder = 模型(编码器输入,解码器输出) `

我已经尝试通过 hdf 文件获取输入。

【问题讨论】:

    标签: python-3.x keras sequence lstm autoencoder


    【解决方案1】:

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

    如果你的系统有显卡,那么你可以稍微优化一下代码。

    1. 尝试批量大小为 1。
    2. 如果您有预处理队列等,请尝试调整队列大小。
    3. 我建议您先尝试一次较小的系列,然后再进行完整的测试,然后检查它是否有效。
    4. 如果您将时间步长设为大,则会失去精度,如果太小,则计算量会很大。检查每一个 其中,如果可以增加时间步长,而不会影响太多 关于精度。
    5. 您可以使用 PCA 来了解重要特征并降低维度。您还可以使用随机森林作为预处理步骤 了解特征重要性并减少特征 重要性。

    【讨论】:

    • 您好,感谢您的回答。当我使用批量大小为 1 时,我的程序仍在运行 OOM。我的功能数量已经很小(即 4)。我的序列的问题是时间步数太大(即 3000 万)。当我使用一个小序列(具有 10 万个时间步长)时,代码工作正常。我没有使用 GPU。
    • 请尝试使用 Google Colaboratory。它提供了一个免费的 GPU 实例。但不要在训练前关闭它。您可以转到运行时>更改运行时>硬件加速器>“使其成为 GPU”。你可以在这里使用技巧检查 colab stackoverflow.com/questions/54402005/…
    • 嗨,我现在已经在 colabs 上训练数据了。同样,由于时间步长,它的内存不足。
    • 我应该将我的序列划分为子序列,然后将其交给 lstm 自动编码器吗?例如,如果我将我的序列 (1,30million,4) 重塑为 (10,3million,4),然后将其提供给 LSTM。但是,它会松散子序列之间的时间依赖性吗?如果是,我该如何维护序列之间的依赖关系?
    • 我建议不要增加时间步长,而是打破你的完整序列。在可管理的部分。在第一部分训练,然后在第二部分训练相同的模型,依此类推。这就是迁移学习。确保按时间顺序提供该系列的这些部分。您必须在每次训练后保存权重,然后在您输入该系列的第二部分时重新加载它们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多