在MATLAB中BP神经网络表达式
来源:互联网 发布:淘宝主店怎么绑定分店 编辑:程序博客网 时间:2024/09/21 08:59
在MATLAB中,我们可以如此构建一个神经网络
当然,input可以是多组数据组成的矩阵,也可以是一组数据组成的向量,如此便可得到预测值。
结果如下:
其中a,b是输入的两个数。
%使用用输入输出数据(inputData、outputData)建立网络,%隐节点个数设为3.其中隐层、输出层的传递函数分别为tansig和purelin,使用trainlm方法训练。net =newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');%设置一些常用参数net.trainparam.goal =0.00001; %训练目标:均方误差低于0.0001net.trainparam.show =400; %每训练400次展示一次结果net.trainparam.epochs =15000; %最大训练次数:15000.net.divideFcn = '';[net,tr] =train(net,inputData,outputData);%调用matlab神经网络工具箱自带的train函数训练网络
其中,隐藏层节点是3,我选取较简单的输入层节点为2,输出层节点是 1来构建网络。
训练好网络后,可用sim函数来运行Simulink模型,可通过输入预测输出,例如:
input=[4000;20]simout =sim(net,input); %调用matlab神经网络工具箱自带的sim函数得到网络的预测值
当然,input可以是多组数据组成的矩阵,也可以是一组数据组成的向量,如此便可得到预测值。
有的时候,我们需要提取已训练好的神经网络,我们可以把它的权值,阈值导出,如下代码,可提取出权值阈值的值。
w12 = net.iw{1,1} %第1层(输入层)到第2层(隐层)的权值b2 = net.b{1} %第2层(隐层)的阈值w23 = net.lw{2,1} %第2层(输入层)到第3层(输出层)的权值b3 = net.b{2} %第3层(输出层)的阈值
结果如下:
得到权值与阈值的值后,我们要代入表达式中,
由于之前构建网络选用的激活函数是tandig ,purelin,预测结果的数学表达式如下:
代表这个权值是第2层的第1个节点到第3层的第1个节点的权值。
在MATLAB中,我将上式整理为如下形式:
simy=purelin(w23*tansig(w12*[a;b]+b2)+b3)
其中a,b是输入的两个数。
w23 ,w12 ,b2,b3为上边提取的权值阈值矩阵。
因为版本问题,newff函数有不同的用法,区别如下:
net =newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');% 新net =newff(minmax(inputData),[3 1],{'tansig','purelin'},'trainlm'); %旧上边两种用法,新用法自带归一化,构建网络时,自动根据输入输出归一化了,旧用法需要手动归一化。
因为新版本自带归一化,新版本网络中的权值和阈值都是对于归一化后的数据,因此,在运用神经网络数学表达式时,需要在之前把输入归一化,在之后把输出反归一化。
归一化方法为
y=(ymax-ymin)*(x-xmin)/(xmax-xmin)+ymin
y是归一化后数据,x是归一化前数据,反归一化公式为:
x=(y-ymin)*(xmax-xmin)/(ymax-ymin)+xmin
因为神经网络选择的是归一化到(-1,1),所以,ymin=-1.ymax=1,输入和输出都是如此。
可写成如下,便可得到数学表达式用输入预测输出,结果与sim函数一致。
a=2*(a-amin)/(amax-amin)-1;b=2*(b-bmin)/(bmax-bmin)-1;simy=purelin(w23*tansig(w12*[a;b]+b2)+b3)simy=(simy+1)*(simymax-simymin)/2+simymin
为何要提取表达式呢,有的时候,在MATLAB上很方便的训练好网络后,可直接利用训练好的权值阈值在其他工具上使用。
2 0
- 在MATLAB中BP神经网络表达式
- Matlab---BP神经网络(获取数学表达式)
- matlab中bp神经网络的一些问题
- MATLAB BP神经网络算法
- Matlab实现BP神经网络
- matlab实现BP神经网络
- matlab BP神经网络介绍
- matlab中的BP神经网络
- BP神经网络 MATLAB源程序
- matlab BP神经网络
- BP神经网络matlab实现
- Matlab BP神经网络使用方法
- matlab BP神经网络分类
- BP神经网络 MATLAB源程序
- MATLAB实现BP神经网络
- matlab BP神经网络学习
- matlab BP神经网络入门
- Matlab实现BP神经网络
- noip2009靶形数独
- 实战项目商城(第七天)
- Vector
- 杂
- JavaScript for Kids 学习笔记4. Objects
- 在MATLAB中BP神经网络表达式
- Android中的Service:Binder,Messenger,AIDL
- 算术转化和整型提升的奥秘
- SlidingMenu侧滑
- 字符串分割c++
- C#中DllImport用法汇总
- 算法练习
- springmvc的头文件格式
- 基于socket的可发送表情简单即时通讯