有人知道bp神经网络Matlab R2012a 的newff用法么

2024-05-18 15:02

1. 有人知道bp神经网络Matlab R2012a 的newff用法么

newff()
这个函数是建立一个神经网络的函数,其中括号里面的参数含义依次是:输入数据和输出数据的范围,隐含层神经元个数,传递函数设置
像BP网编程这块,需要先给出输入和期望输出的数据矩阵,然后newff函数建立网络,然后train函数训练网络,在这个训练中你需要设置一些训练目标和训练次数等参数,然后还有一个sim仿真函数,就是把新的样本数据做为输入,通过这个我们训练好的网络判断这个样本所属分类。因为我用BP网主要做的是分类的实验,所以就从分类这块给你说明了。
学BP网络,我个人经验是需要把BP的正向输出和反向误差修改权值阈值这个学习过程,自己先手算明白,然后自己编程序实验,最后再用MATLAB的封装函数NEWFF这些,你会发现NEWFF和我们自己理解的训练过程还是有细微的差别的。

有人知道bp神经网络Matlab R2012a 的newff用法么

2. matlab神经网络工具箱训练出来的函数,怎么输出得到函数代码段

这样:
clear;
%输入数据矩阵
p1=zeros(1,1000);
p2=zeros(1,1000);
%填充数据
for i=1:1000
p1(i)=rand;
p2(i)=rand;
end
%输入层有两个,样本数为1000
p=[p1;p2];
%目标(输出)数据矩阵,待拟合的关系为简单的三角函数
t = cos(pi*p1)+sin(pi*p2);
%对训练集中的输入数据矩阵和目标数据矩阵进行归一化处理
[pn, inputStr] = mapminmax(p);
[tn, outputStr] = mapminmax(t);
%建立BP神经网络
net = newff(pn, tn, [200,10]);
%每10轮回显示一次结果
net.trainParam.show = 10;
%最大训练次数
net.trainParam.epochs = 5000;
%网络的学习速率
net.trainParam.lr = 0.05;
%训练网络所要达到的目标误差
net.trainParam.goal = 10^(-8);
%网络误差如果连续6次迭代都没变化,则matlab会默认终止训练。为了让程序继续运行,用以下命令取消这条设置
net.divideFcn = '';
%开始训练网络
net = train(net, pn, tn);
%训练完网络后要求网络的权值w和阈值b
%获取网络权值、阈值
netiw = net.iw;
netlw = net.lw;
netb = net.b;
w1 = net.iw{1,1}; %输入层到隐层1的权值
b1 = net.b{1} ; %输入层到隐层1的阈值
w2 = net.lw{2,1}; %隐层1到隐层2的权值
b2 = net.b{2} ; %隐层1到隐层2的阈值
w3 = net.lw{3,2}; %隐层2到输出层的权值
b3 = net.b{3} ;%隐层2到输出层的阈值
%在默认的训练函数下,拟合公式为,y=w3*tansig(w2*tansig(w1*in+b1)+b2)+b3;
%用公式计算测试数据[x1;x2]的输出,输入要归一化,输出反归一化
in = mapminmax('apply',[x1;x2],inputStr);
y=w3*tansig(w2*tansig(w1*in+b1)+b2)+b3;
y1=mapminmax('reverse',y,outputStr);
%用bp神经网络验证计算结果
out = sim(net,in);
out1=mapminmax('reverse',out,outputStr);

扩展资料:注意事项
一、训练函数
1、traingd
Name:Gradient descent backpropagation (梯度下降反向传播算法 )  
Description:triangd is a network training function that updates weight and bias values  according to gradient descent.              
2、traingda
Name:Gradient descent  with adaptive learning rate backpropagation(自适应学习率的t梯度下降反向传播算法)   
Description:triangd is a network training function that updates weight and bias values  according to gradient descent with adaptive learning rate. it will return a trained net (net) and  the trianing record (tr).
3、traingdx (newelm函数默认的训练函数)
name:Gradient descent with momentum and adaptive learning rate backpropagation(带动量的梯度下降的自适应学习率的反向传播算法)  
Description:triangdx is a network training function that updates weight and bias values  according to gradient descent momentum and an adaptive learning rate.it will return a trained net (net) and  the trianing record (tr).   
4、trainlm
Name:Levenberg-Marquardt backpropagation (L-M反向传播算法)
Description:triangd is a network training function that updates weight and bias values  according toLevenberg-Marquardt optimization. it will return a trained  net (net) and  the trianing record (tr). 
注:更多的训练算法请用matlab的help命令查看。
二、学习函数
1、learngd
Name:Gradient descent weight and bias learning function (梯度下降的权值和阈值学习函数)  
Description:learngd is the gradient descent weight and bias learning function, it will return the weight change dW and a new learning state.
2、learngdm 
Name:Gradient descent with momentum weight and bias learning function (带动量的梯度下降的权值和阈值学习函数)  
Description:learngd is the gradient descent  with momentum weight and bias learning function, it will return the weight change dW and a new learning state.
注:更多的学习函数用matlab的help命令查看。
三、训练函数与学习函数的区别
函数的输出是权值和阈值的增量,训练函数的输出是训练好的网络和训练记录,在训练过程中训练函数不断调用学习函数修正权值和阈值,通过检测设定的训练步数或性能函数计算出的误差小于设定误差,来结束训练。    
或者这么说:训练函数是全局调整权值和阈值,考虑的是整体误差的最小。学习函数是局部调整权值和阈值,考虑的是单个神经元误差的最小。
它的基本思想是学习过程由信号的正向传播与误差的反向传播两个过程组成。
正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。
反向传播时,将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。

3. matlab BP神经网络多输出怎么实现。比如输出层有4个节点,输出向量和训练函数该怎么写?

输出的数量取决于你的target怎么设置,比如你的输入是一个5行n列的数据,输出是一个4行n列的数据,你用这个数据初始化并且训练神经网络,得到的当然是5个输入值4个输出值的神经网络。
函数怎么写的话,去看matlab 帮助,搜索newff,你就能看到用法了。

matlab BP神经网络多输出怎么实现。比如输出层有4个节点,输出向量和训练函数该怎么写?

4. 如何用newff函数编写一个2输入,隐含层为2层,每层有3个神经元,一个输出的神经网络?

你的X1错了,X1的行数等于输入节点数,X1应该是个2x6的矩阵。所以才会报错提示超出了矩阵维数。
newff函数的格式为:net=newff(PR,[S1 S2 ...SN],{TF1 TF2...TFN},BTF,BLF,PF),函数newff建立一个可训练的前馈网络。输入参数说明:
PR:Rx2的矩阵以定义R个输入向量的最小值和最大值;
Si:第i层神经元个数;
TFi:第i层的传递函数,默认函数为tansig函数;
BTF:训练函数,默认函数为trainlm函数;
BLF:权值/阀值学习函数,默认函数为learngdm函数;
PF:性能函数,默认函数为mse函数。

5. BP神经网络多输出表达式如何确定

当然可以,神经网络具有极强的非线性映射能力,对非线性函数的拟合效果非常好,你可以试试BP神经网络,拟合能力已经很强。当对系统对于设计人员来说,很透彻或者很清楚时,则一般利用数值分析,偏微分方程等数学工具建立精确的数学模型,但当对系统很复杂,或者系统未知,系统信息量很少时,建立精确的数学模型很困难时,神经网络的非线性映射能力则表现出优势,因为它不需要对系统进行透彻的了解,但是同时能达到输入与输出的映射关系,这就大大简化设计的难度。

BP神经网络多输出表达式如何确定

6. R语言做神经网络,多个输入多个输出的命令怎么写

net=newff(minmax(p),[3,5,4],{'tansig','purelin','logsig'},'trainlm');
net.trainParam.goal= 0.00001;
net.trainParam.epochs= 10000;
net= train(net,p,t);
Y=sim(net,p);
隐含层数通常取输入层数的1.2~1.5倍,但隐含层数增加相对训练效果会好些。
输出结果是根据你的T决定的,你这个如果训练效果好的话输出值的和就为1。

7. MTALAB中BP神经网络newff函数

cols=100;%样本数量p=zeros(2,cols);%这个不要也可以,但效率会低一点t=zeros(2,cols);for i=1:colstheta1=rand()*pi/2;theta2=rand()*pi/2;x=L1*cos(theta1)+L2*cos(theta1+theta2);%L1、L2需要预定义y=L1*sin(theta1)+L2*sin(theta1+theta2);p(1,i)=theta1;p(2,i)=theta2;t(1,i)=x;t(2,i)=y;end%接下来用newff、train、sim函数代码如上。
newff函数的格式为:
net=newff(PR,[S1 S2 ...SN],{TF1 TF2...TFN},BTF,BLF,PF),函数newff建立一个可训练的前馈网络。输入参数说明:
PR:Rx2的矩阵以定义R个输入向量的最小值和最大值;
Si:第i层神经元个数;
TFi:第i层的传递函数,默认函数为tansig函数;
BTF:训练函数,默认函数为trainlm函数;
BLF:权值/阀值学习函数,默认函数为learngdm函数;
PF:性能函数,默认函数为mse函数。

MTALAB中BP神经网络newff函数

8. bp神经网络matlab实现时,newff函数中的网络各层神经元的激活函数怎么选啊?

BP网络要求激活函数处处可微,因此一般选S型函数(Sigmoid),常见的为对数S型函数(logsig)和正切S型函数(tansig)。
最新文章
热门文章
推荐阅读