gpt4 book ai didi

python - 使用 PyTorch 生成 LSTM 时间序列

转载 作者:IT老高 更新时间:2023-10-28 20:42:07 26 4
gpt4 key购买 nike

这几天,我正在尝试使用 LSTM 构建一个简单的正弦波序列生成,但到目前为止还没有看到任何成功。

我从 time sequence prediction example 开始

我想做的不同之处在于:

  • 使用与 LBFGS 不同的优化器(例如 RMSprob)
  • 尝试不同的信号(更多正弦波分量)

这是 my code 的链接. “experiment.py”为主文件

我做的是:

  • 我生成人工时间序列数据(正弦波)
  • 我将这些时间序列数据切成小序列
  • 我的模型的输入是时间序列 0...T,输出是时间序列 1...T+1

会发生什么:

  • 训练和验证损失平稳下降
  • 测试损失非常低
  • 但是,当我尝试从种子(来自测试数据的随机序列)开始生成任意长度的序列时,一切都会出错。输出总是平坦的

Shape of the generated signal

我根本不明白问题出在哪里。我现在正在玩这个一周,看不到任何进展。如果有任何帮助,我将不胜感激。

谢谢

最佳答案

这是正常行为,发生这种情况是因为您的网络对输入的质量过于自信,并且没有学会充分依赖过去(依赖于其内部状态),而只依赖输入。当您在生成设置中将网络应用于其自己的输出时,网络的输入并不像在获得真实输入的训练或验证案例中那样可靠。

我有两种可能的解决方案:

  • 第一个是最简单但不太直观的一个:在输入中添加一点高斯噪声。这将迫使网络更多地依赖其隐藏状态。

  • 第二个,是最明显的解决方案:在训练期间,以一定的概率 p 馈送它不是真正的输入,而是它生成的输出。从 p=0 开始训练并逐渐增加它,以便它独立地学习一般越来越长的序列。这称为计划抽样,您可以在此处了解更多信息:https://arxiv.org/abs/1506.03099 .

关于python - 使用 PyTorch 生成 LSTM 时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43459013/

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