通过自己不断的摸索,对于一维数据的拟合(线性拟合),知道了怎么利用训练好的神经网络进行数据的输出,现总结如下:
对于线性的函数拟合,比如y=5*x-10
输入数据是x=1:20;输出是y=5*x-10;调用神经网络函数拟合工具箱,网络模型见附图1:
对数据进行拟合,得到网络net。拟合效果见附图2:
其中iw=net.iw, iw= [-0.0263] []lw=net.lwlw = [] [] [-38.0646] []b=net.bb = [-1.8655e-05] [-7.1642e-04]这样就可以得到两个关系式:y1=-0.0263*x-1.8655e-05;y_out=-38.0646*y1-7.1642e-04;在神经网络中使用的数据都是归一化的数据,这一点是非常重要的。现在对上面得到的两个关系式来进行验证:x=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];y=[ -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90];归一化后的数据:x=[ -1.0000 -0.8947 -0.7895 -0.6842 -0.5789 -0.4737 -0.3684 -0.2632 -0.1579 -0.0526 0.0526 0.1579 0.2632 0.3684 0.4737 0.5789 0.6842 0.7895 0.8947 1.0000];y=[-1.0000 -0.8947 -0.7895 -0.6842 -0.5789 -0.4737 -0.3684 -0.2632 -0.1579 -0.0526 0.0526 0.1579 0.2632 0.3684 0.4737 0.5789 0.6842 0.7895 0.8947 1.0000]现在举例:当x=2.5,y=5*2.5-10=2.5,这个是实际的输出,当我们用神经网络输出,来看下他的结果:2.5归一之后是-0.842105,将它带入y1=-0.0263*x-1.8655e-05;y_out=-38.0646*y1-7.1642e-04;得到y_out= -0.843037将y_out反归一化后得到的值是2.45574当x=10.5时,实际输出是42.5,用神经网络输出是42.4997由此可以看出上面的两个公式用来输出是正确的;但是对于一维的非线性拟合,一个神经元是不行的,需要多个神经元,拟合的效果是非常好的,由此可见神经网络对非线性数据拟合是非常理想的工具,但是如何利用训练好的网络进行输出?我用了和上面一样的线性方法输出,但是结果总是不对,不知道问题出在哪里,希望高手指点一下,在此谢过