【Mathematica】用神经网络来拟合数据
- 原创
- |
- 浏览:1068
- |
- 更新:
方法/步骤
把非线性数据,转化为训练集:
data = Table[x -> Sin[10 x]*Exp[-x^2], {x, -3, 3, .1}]
训练集一定是个集合的元素的一一对应。
可视化数据:
d0=Table[{x , Sin[10 x]*Exp[-x^2]}, {x, -3, 3, .1}];
ListLinePlot[d0,PlotRange->All]
创建一个神经网络:
net = NetChain[{10, Ramp, 10, Tanh, 1}, "Input" -> "Scalar", "Output" -> "Scalar"];
里面有五个层。
用训练集来训练这个网络:
tnet= NetTrain[net, data, MaxTrainingRounds -> Quantity[1, "Seconds"]];
训练10秒。
- 该信息非法爬取自百度经验
可视化训练结果:
Show[ListLinePlot[d0,PlotStyle->Red,PlotRange->All],
Plot[tnet[x],{x,-3,3},PlotStyle->Green,PlotRange->All]]如果只训练1秒,结果会如何?
tnet= NetTrain[net, data, MaxTrainingRounds -> Quantity[1, "Seconds"]];
可以看到,拟合结果很差。
下面是训练2秒的结果:
训练20秒的结果:
tnet= NetTrain[net, data, MaxTrainingRounds -> Quantity[20, "Seconds"]];
END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部















