猿问

循环网络 (RNN) 不会学习一个非常简单的函数(问题中显示的图)

所以我试图训练一个简单的循环网络来检测输入信号中的“突发”。下图显示了 RNN 的输入信号(蓝色)和期望(分类)输出,以红色显示。

因此,每当检测到突发时,网络的输出应从 1 切换到 0,并保持与该输出相同。用于训练 RNN 的输入序列之间唯一发生变化的是爆发发生的时间步长。

按照https://github.com/MorvanZhou/PyTorch-Tutorial/blob/master/tutorial-contents/403_RNN_regressor.py上的教程,我无法学习 RNN。学习到的 RNN 始终以“无记忆”方式运行,即不使用记忆进行预测,如以下示例行为所示:

http://img.mukewang.com/60f7de670001bb6c07150292.jpg

绿线显示了网络的预测输出。在这个例子中我做错了什么以至于无法正确学习网络?网络任务是不是很简单?

我正在使用:

  1. torch.nn.CrossEntropyLoss 作为损失函数

  2. 用于学习的 Adam 优化器

  3. 具有 16 个内部/隐藏节点和 2 个输出节点的 RNN。他们使用 torch.RNN 类的默认激活函数。


婷婷同学_
浏览 184回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答