多语言展示
当前在线:905今日阅读:176今日分享:34

怎么训练一个曲线预测工具?

给出一个函数图像。我们把这个函数图像的某个区间的自变量和变量一一对应起来,形成一个训练集。然后,用这个训练集来训练神经网络,看看能不能很好的还原原图像。
工具/原料
1

电脑

2

Mathematica

方法/步骤
1

首先,根据函数来采样,以便得到训练集:try= Table[x ->Cos[10 x]*Exp[-2 x^2], {x, -2,2, .02}]

2

我们用训练集里面的数据的后面部分,可以近似画出原函数的图像:plot=ListLinePlot[try[[All, 2]], PlotStyle ->Green,Axes->False, Frame -> False]

3

给定一个未初始化的神经网络:wang = NetChain[{10, Ramp, 10, Tanh, 1}, 'Input' -> 'Scalar', 'Output' -> 'Scalar']输入和输出,都是数字(区别于向量和张量)。

4

自定义一个绘图函数:pp[w_, t_] := Show[plot, ListPlotLine[w@Range[-2, 2, .02], PlotStyle ->Red,Axes->False, Frame -> False], Epilog -> Text[t, {10, 0.9}, {-1, 0}]]

5

训练神经网络:jiqi = NetTrain[wang,try,MaxTrainingRounds -> Quantity[10, 'Seconds'],TrainingProgressReporting -> {pp[#Net, #AbsoluteBatch] &, 'Interval' -> 0.1}]原始神经网络是上面定义的wang;训练集是try;训练持续10秒;每隔0.1秒,就用训练的jiqi来拟合一下图像。

6

训练10秒的jiqi,作图如下。其中红色图就是jiqi出图。jiqi = NetTrain[wang,try,MaxTrainingRounds -> Quantity[10, 'Seconds']];pp[jiqi, '10']

7

下图是训练5秒之后的jiqi的作图能力。jiqi = NetTrain[wang,try,MaxTrainingRounds -> Quantity[5, 'Seconds']];pp[jiqi, '5']

8

训练2秒的机器作图。

9

训练1秒的机器作图。每次训练,都会得到不同的效果。

10

下图是训练10秒的jiqi,绘制的区间为{-5,5}的函数图形。

11

下图是训练2秒的jiqi,绘制的区间为{-5,5}的函数图形。

12

下图是训练20秒的jiqi,绘制的区间为{-5,5}的函数图形。

注意事项

并非训练的时间越长越好。上面的例子中,训练时间如果定为100秒,计算机会崩溃。

推荐信息