【发布时间】:2021-01-24 01:23:48
【问题描述】:
我正在尝试实施神经网络来识别非线性系统。我已经在 simulink 中实现了一个非常简单的系统,并且基于它的输入和输出示例,我想让 NN 模仿它的行为。系统如下
顶部的模式(以随机数作为输入的模式)生成训练集,而第二个模式(以斜坡作为输入)用于检查 NN 是否正常运行。 该网络是一个两层网络,具有 tanh 节点的隐藏层和线性输出层。我已经实现了两个版本的网络,一个是使用随机梯度下降(在每一步更新),另一个是批量执行更新。目前我专注于迭代解决方案。 我还实现了this post 中描述的 train-validate-test 过程。
这里是网络的参数:
- 学习率: 1e-3;
- 隐藏单元数: 15
- 样本数: 10002
- 最大时期: 1000
- 错误阈值: 0.07
我使用示例集的 80% 来训练 NN,10% 用于计算误差,剩余的 10% 用于生成如下所示的输出。但是,我不能让网络将系统概括为不同类型的输入。
前两个图显示了训练阶段。左边是训练过程最后一次迭代的输出,右边是每个训练时期结束时误差的平均值图。最后两张图显示了网络在看不见的数据上的性能。右侧的图是使用未以任何方式用于训练的示例集作为输入数据获得的。右侧是使用斜坡作为输入生成的,并将其与相同输入的系统输出进行比较。
我做错了什么? 完整代码可见here
问候
安德烈亚
【问题讨论】:
标签: machine-learning neural-network