电脑
Mathematica
首先,根据函数来采样,以便得到训练集:try= Table[x ->Cos[10 x]*Exp[-2 x^2], {x, -2,2, .02}]
我们用训练集里面的数据的后面部分,可以近似画出原函数的图像:plot=ListLinePlot[try[[All, 2]], PlotStyle ->Green,Axes->False, Frame -> False]
给定一个未初始化的神经网络:wang = NetChain[{10, Ramp, 10, Tanh, 1}, 'Input' -> 'Scalar', 'Output' -> 'Scalar']输入和输出,都是数字(区别于向量和张量)。
自定义一个绘图函数: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}]]
训练神经网络:jiqi = NetTrain[wang,try,MaxTrainingRounds -> Quantity[10, 'Seconds'],TrainingProgressReporting -> {pp[#Net, #AbsoluteBatch] &, 'Interval' -> 0.1}]原始神经网络是上面定义的wang;训练集是try;训练持续10秒;每隔0.1秒,就用训练的jiqi来拟合一下图像。
训练10秒的jiqi,作图如下。其中红色图就是jiqi出图。jiqi = NetTrain[wang,try,MaxTrainingRounds -> Quantity[10, 'Seconds']];pp[jiqi, '10']
下图是训练5秒之后的jiqi的作图能力。jiqi = NetTrain[wang,try,MaxTrainingRounds -> Quantity[5, 'Seconds']];pp[jiqi, '5']
训练2秒的机器作图。
训练1秒的机器作图。每次训练,都会得到不同的效果。
下图是训练10秒的jiqi,绘制的区间为{-5,5}的函数图形。
下图是训练2秒的jiqi,绘制的区间为{-5,5}的函数图形。
下图是训练20秒的jiqi,绘制的区间为{-5,5}的函数图形。
并非训练的时间越长越好。上面的例子中,训练时间如果定为100秒,计算机会崩溃。