MATLAB神经网络学习手札(1)

接触MATLAB神经网络有一段时间了,但由于是自己业余学习的一直没有认真学下去,这几天又捣鼓了一下,下面是基于MATLAB2016a的环境下厕所的简单曲线拟合实验

首先需要了解几个重要的函数

  • fitnet(hiddenSizes,trainFcn)
  • configure(net,x,t)
  • sim('model', ConfigSet)
  • [net,tr]=train(net,inputs,targets)

关于神经网络的各个函数可以去官网在线帮助文档或者MATLAB本地的帮助文件那里查看学习,帮助文档里的介绍非常丰富,不过有点还需要自己网上搜索学习。

tic;
x=0:0.4:10;
y=x.*sin(x);  %这是目标输出样本
net=fitnet(10,'trainlm'); %先构造一个隐含层为10个神经元的网络,默认的训练网络就是‘trainlm',Levenberg-Marquardt算法
xx=0:0.1:10; %这是新的训练样本

net0=configure(net,x,y); %先对数据随机配置
y0=sim(net0,xx); %得出此时的结果
%plotperform(tr0) 

[net1,tr1]=train(net,x,y); %对数据进行训练
y1=sim(net1,xx); %得到训练后的结果
plotperform(tr1)

figure;plot(x,y,'r',xx,y1,'b-.',xx,y0,'g--');
toc

得到如下结果:Elapsed time is 2.005314 seconds.
MATLAB神经网络学习手札(1)_第1张图片
MATLAB神经网络学习手札(1)_第2张图片
由结果可以看到10个隐含层,’trainlm’训练下的效果还可以,在另外我也试过改变隐含层神经元个数和训练方程来比较不同的算法就结果的影响,大家也可以参看帮助文档自己试一下。

这只是个简单的曲线拟合的方法,新版的MATLAB函数有点变化,以前的newff 现在是feedforwardnet,这些我也正在学习中。另外要提一下的就是曲线拟合属于有监督学习(Supervised Learning) 个人的理解就是类似这种给出目标输出的数据要你去分析其他输入量所对应的输出量,在学习机器学习 里老师讲到了一个例子,就是你想卖一件房子,你要参考相对应几平米的房子的售价再来分析一下自己能卖出多少钱才合适,自己感觉就是高中学习的线性回归分析的加强版。

你可能感兴趣的:(matlab,神经网络)