gpt4 book ai didi

python - 当脚本在更大的数据集上运行时,LSTM 自动编码器没有进展

转载 作者:太空狗 更新时间:2023-10-29 20:28:04 27 4
gpt4 key购买 nike

p_input 的形状 this LSTM Autoencoder对于"test.py"是(128,8,1);意思是 128 组 8 位数字。我正在尝试使用 4 组 25,000 个时间步长(基本上是 0 秒到 25,000 秒)使该模型适应基于时间序列的数据。我尝试将此数据集输入到形状为 (4,25000,1) 的 p_input 中,但没有出现任何错误。但是,当我运行脚本时,没有得到 iter 1: 0.01727, iter 2: 0.00983, ... 我没有从脚本中得到任何打印的反馈,所以我假设有什么东西阻碍了脚本。我还尝试将 batch_num 更改为 4 并将 step_num 更改为 25,000 直接添加到未经编辑的“test.py”文件中,结果相同,没有打印反馈。

我的想法是,在“test.py”中,p_inputs 计算tf.splittf.squeeze 花费的时间太长操作。另一个想法是,我可能需要增加 hidden_​​num 中隐藏的 LSTM 单元的数量和/或增加 epoch 的数量(iteration)。此外,batch_num 可能必须大于 step_num。我用 step_num = 4batch_num = 25000 对“test.py”进行了尝试,脚本正常运行并打印了反馈。

让我知道您对阻止脚本运行的问题可能是什么的想法。

最佳答案

输入的第二个维度是网络为计算梯度而展开的次数 BPTT算法。

这个想法是通过将每个时间步“展开”为网络的新层,将循环网络(如 LSTM)转换为前馈网络。

当您一起提供整个时间序列(即 25000 个时间步长)时,您将展开网络 25000 次,也就是说,您将获得一个展开的前馈网络,其中包含 25000 层!!

因此,尽管我不知道为什么您没有收到任何错误,但问题可能与内存不足问题有关。您无法将 25000 层的变量放入内存。

当您必须处理较长的时间序列时,您需要将数据分成 block (比如 20 个时间步长)。您每次运行提供一个 block 。然后,在接下来的每次运行中,您需要使用上一次运行的最后状态恢复网络的初始状态。

我可以给你举个例子。您现在拥有的(出于实际原因我忽略了第三维)是一个 4x25000 的矢量,其形状如下所示:

--------------------- 25000----------------------
|
|
4
|
|
--------------------------------------------------

你现在必须把它分成这样的 block :

----20-----  ----20-----  ----20-----
| | | | | |
| | | | | |
4 | 4 | 4 | [...]
| | | | | |
| | | | | |
----------- ----------- -----------

您每次提供一个 4x20 的大块。然后,您的 LSTM 在每次卡盘之后的最终状态必须作为下一个卡盘的输入提供。

所以你的 feed_dict 必须是这样的:

feed_dict ={x: input_4_20}, 
state.c = previous_state.c,
state.h=previous_state.h}

参见 LM tutorial关于如何为下一次运行提供 LSTM 的状态的示例。

Tensorflow 提供了一些功能来自动执行此操作。检查Tensorflow DevSummit Tutorial有关更多信息,请访问 RNN API。我链接了解释所需功能的确切秒数。该函数是 tf.contrib.training.batch_sequences_with_states(...)

作为最后的建议,我建议您重新考虑您的任务。事实上,25000 的时间序列是一个非常长的序列,我担心即使是 LSTM 也无法管理如此长的过去依赖关系。我的意思是,当您处理该系列的第 24000 个元素时,LSTM 状态可能已经忘记了第一个元素的所有内容。在这些情况下,请尝试查看您的数据以了解您的现象的规模。如果您不需要一秒钟的粒度(即您的系列是高度冗余的,因为特征不会及时快速变化),请缩小您的系列以管理更短的序列。

关于python - 当脚本在更大的数据集上运行时,LSTM 自动编码器没有进展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807858/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com