『壹』 1.如何用MATLAB神经网络工具箱创建BP神经网络模型具体有哪些步骤请高手举实例详细解释下 2.如何把输
%人脸识别模型,脸部模型自己找吧。
function mytest()
clc;
images=[ ];
M_train=3;%表示人脸
N_train=5;%表示方向
sample=[];
pixel_value=[];
sample_number=0;
for j=1:N_train
for i=1:M_train
str=strcat('Images\',num2str(i),'_',num2str(j),'.bmp'); %读取图像,连接字符串形成图像的文件名。
img= imread(str);
[rows cols]= size(img);%获得图像的行和列值。
img_edge=edge(img,'Sobel');
%由于在分割图片中我们可以看到这个人脸的眼睛部分也就是位于分割后的第二行中,位置变化比较大,而且眼睛边缘检测效果很好
sub_rows=floor(rows/6);%最接近的最小整数,分成6行
sub_cols=floor(cols/8);%最接近的最小整数,分成8列
sample_num=M_train*N_train;%前5个是第一幅人脸的5个角度
sample_number=sample_number+1;
for subblock_i=1:8 %因为这还在i,j的循环中,所以不可以用i
block_num=subblock_i;
pixel_value(sample_number,block_num)=0;
for ii=sub_rows:(2*sub_rows)
for jj=(subblock_i-1)*sub_cols+1:subblock_i*sub_cols
pixel_value(sample_number,block_num)=pixel_value(sample_number,block_num)+img_edge(ii,jj);
end
end
end
end
end
%将特征值转换为小于1的值
max_pixel_value=max(pixel_value);
max_pixel_value_1=max(max_pixel_value);
for i=1:3
mid_value=10^i;
if(((max_pixel_value_1/mid_value)>1)&&((max_pixel_value_1/mid_value)<10))
multiple_num=1/mid_value;
pixel_value=pixel_value*multiple_num;
break;
end
end
% T 为目标矢量
t=zeros(3,sample_number);
%因为有五类,所以至少用3个数表示,5介于2的2次方和2的3次方之间
for i=1:sample_number
% if((mod(i,5)==1)||(mod(i,5)==4)||(mod(i,5)==0))
if(i<=3)||((i>9)&&(i<=12))||((i>12)&&(i<=15))
t(1,i)=1;
end
%if((mod(i,5)==2)||(mod(i,5)==4))
if((i>3)&&(i<=6))||((i>9)&&(i<=12))
t(2,i)=1;
end
%if((mod(i,5)==3)||(mod(i,5)==0))
if((i>6)&&(i<=9))||((i>12)&&(i<=15))
t(3,i)=1;
end
end
% NEWFF——生成一个新的前向神经网络
% TRAIN——对 BP 神经网络进行训练
% SIM——对 BP 神经网络进行仿真
% 定义训练样本
% P 为输入矢量
P=pixel_value'
% T 为目标矢量
T=t
size(P)
size(T)
% size(P)
% size(T)
% 创建一个新的前向神经网络
net_1=newff(minmax(P),[10,3],{'tansig','purelin'},'traingdm')
% 当前输入层权值和阈值
inputWeights=net_1.IW{1,1}
inputbias=net_1.b{1}
% 当前网络层权值和阈值
layerWeights=net_1.LW{2,1}
layerbias=net_1.b{2}
% 设置训练参数
net_1.trainParam.show = 50;
net_1.trainParam.lr = 0.05;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 10000;
net_1.trainParam.goal = 1e-3;
% 调用 TRAINGDM 算法训练 BP 网络
[net_1,tr]=train(net_1,P,T);
% 对 BP 网络进行仿真
A = sim(net_1,P);
% 计算仿真误差
E = T - A;
MSE=mse(E)
x=[0.14 0 1 1 0 1 1 1.2]';
sim(net_1,x)
『贰』 如何用MATLAB的神经网络工具箱实现三层BP网络
使用神经网络工具箱可以非常简便地实现网络建立和训练,实例代码如下:
%%BP算法
functionOut=bpnet(p,t,p_test)
%p,t为样本需要提前组织好
globalS1
net=newff(minmax(p),[S1,8],{'tansig','purelin'},'trainlm');%trainlm训练函数最有效
%net=newff(P,T,31,{'tansig','purelin'},'trainlm');%新版用法
net.trainParam.epochs=1000;
net.trainParam.goal=0.00001;
net.trainParam.lr=0.01;
net.trainParam.showWindow=false;%阻止训练窗口的弹出
net.trainParam.showCommandLine=false;%阻止训练窗口的弹出
net=train(net,p,t);
Out=sim(net,p_test);
end
上面的代码不完整,完整的带训练样本数据的程序见附件。
『叁』 matlab工具箱实现BP神经网络,我想在一定样本条件下,一部分样本训练网络,另一部分样本验证网络,求指点
你需要的功能比较简单,可以考虑直接使用MATLAB提供的神经网络图形用户界面(Neural Network Graphic User Interface)的功能。
在Matlab命令窗口敲nntool命令调出来,打开Network/Data管理器窗口,再点击New,按步骤操作即可。在里面可以设置哪些是训练数据样本,哪些是验证网络泛化能力的样本。
『肆』 BP神经网络工具箱process
每次训练,网络的初始权值都不同,因此BP算法的每次迭代、权值修正都不相同。可以认为每次训练都充满了随机性,这也是有时训练会陷入局部极小点,而有时并不会的原因。
performance就是指网络最后的性能,你之前设定的net.trainParam.goal=0.00001;就是这个指标。MATLAB训练时测试样本的输出误差达到这个设定值,训练就停止了。
以右边的值为准,中间框子里的值是不断变化的,当走到最右端时就达到了预设目标。
『伍』 直接用神经网络工具箱构建bp神经网络,希望能给个例子说明,有注解最好,本人matlab新手,谢谢
BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层专前馈网络,是目前应用属最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。
附件就是利用神经网络工具箱构建BP神经网络进行预测的实例。如果要用可视化工具,可以在命令窗口输入nntool.
『陆』 BP神经网络预测代码
你这是在做时间序列呢。
你可以去《神经网络之家》nnetinfo----》学习教程二--->神经网络在时间序列上的应用
上面有讲解。我把代码摘抄给你
% time series:神经网络在时间序列上的应用
% 本代码出自《神经网络之家》
timeList = 0 :0.01 : 2*pi; %生成时间点
X = sin(timeList); %生成时间序列信号
%利用x(t-5),x(t-4),x(t-3),x(t-2),x(t-1)作为输入预测x(t),将x(t)作为输出数据
inputData = [X(1:end-5);X(2:end-4);X(3:end-3);X(4:end-2);X(5:end-1)];
outputData = X(6:end);
%使用用输入输出数据(inputData、outputData)建立网络,
%隐节点个数设为3.其中隐层、输出层的传递函数分别为tansig和purelin,使用trainlm方法训练。
net = newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');
%设置一些常用参数
net.trainparam.goal = 0.0001; %训练目标:均方误差低于0.0001
net.trainparam.show = 400; %每训练400次展示一次结果
net.trainparam.epochs = 1500; %最大训练次数:15000.
[net,tr] = train(net,inputData,outputData);%调用matlab神经网络工具箱自带的train函数训练网络
simout = sim(net,inputData); %调用matlab神经网络工具箱自带的sim函数得到网络的预测值
figure; %新建画图窗口窗口
t=1:length(simout);
plot(t,outputData,t,simout,'r')%画图,对比原来的输出和网络预测的输出
%------------------附加:抽取数学表达式----------------------------top
%希望脱离matlab的sim函数来使用训练好网络的话,可以抽取出数学的表达式,|
%这样在任何软件中,只需要按表达式计算即可。 |
%============抽取数学表达式==================
%抽取出网络的权值和阈值
w12 = net.iw{1,1}; %第1层(输入层)到第2层(隐层)的权值
b2 = net.b{1}; %第2层(隐层)的阈值
w23 = net.lw{2,1}; %第2层(隐层)到第3层(输出层)的权值
b3 = net.b{2}; %第3层(输出层)的阈值
%由于有归一化,必须先将归一化信息抓取出来
iMax = max(inputData,[],2);
iMin = min(inputData,[],2);
oMax = max(outputData,[],2);
oMin = min(outputData,[],2);
%方法1:归一化--->计算输出--->反归一化
normInputData=2*(inputData -repmat(iMin,1,size(inputData,2)))./repmat(iMax-iMin,1,size(inputData,2)) -1;
tmp = w23*tansig( w12 *normInputData + repmat(b2,1,size(normInputData,2))) + repmat(b3,1,size(normInputData,2));
myY = (tmp+1).*repmat(oMax-oMin,1,size(outputData,2))./2 + repmat(oMin,1,size(outputData,2));
%方法2:用真正的权值和阈值进行计算
%公式请参考《提取对应原始数据的权重和阈值》
W12 = w12 * 2 ./repmat(iMax' -iMin',size(w12,1),1);
B2 = -w12* (2*iMin ./(iMax - iMin) + 1) + b2;
W23 = w23 .*repmat((oMax -oMin),1,size(w23,2))/2;
B3 = (oMax -oMin) .*b3 /2 + (oMax -oMin)/2 + oMin;
%最终的数学表达式:
myY2 = W23 *tansig( W12 *inputData + repmat(B2,1,size(inputData,2))) + repmat(B3,1,size(inputData,2));
『柒』 matlab bp神经网络工具箱怎么用
%% 训练集/测试集产来生
% 训练源集——用于训练网络
P_train = ;%输入集
T_train = ;%输出集
% 测试集——用于测试或者使用。
P_test = ;%输入
T_test ;
N = size(P_test,2);
%% BP神经网络创建、训练及仿真测试
% 创建网络
net = newff(P_train,T_train,9);
% 设置训练参数
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
net.trainParam.lr = 0.01;
% 训练网络
net = train(net,P_train,T_train);
% 仿真测试、使用。
T_test = sim(net,P_test);%得到结果。
『捌』 matlab神经网络工具箱具体怎么用
为了看懂师兄的文章中使用的方法,研究了一下神经网络
昨天花了一天的时间查怎么写程序,但是费了半天劲,不能运行,网络知道里倒是有一个,可以运行的,先贴着做标本
% 生成训练样本集
clear all;
clc;
P=[110 0.807 240 0.2 15 1 18 2 1.5;
110 2.865 240 0.1 15 2 12 1 2;
110 2.59 240 0.1 12 4 24 1 1.5;
220 0.6 240 0.3 12 3 18 2 1;
220 3 240 0.3 25 3 21 1 1.5;
110 1.562 240 0.3 15 3 18 1 1.5;
110 0.547 240 0.3 15 1 9 2 1.5];
0 1.318 300 0.1 15 2 18 1 2];
T=[54248 162787 168380 314797;
28614 63958 69637 82898;
86002 402710 644415 328084;
230802 445102 362823 335913;
60257 127892 76753 73541;
34615 93532 80762 110049;
56783 172907 164548 144040];
@907 117437 120368 130179];
m=max(max(P));
n=max(max(T));
P=P'/m;
T=T'/n;
%-------------------------------------------------------------------------%
pr(1:9,1)=0; %输入矢量的取值范围矩阵
pr(1:9,2)=1;
bpnet=newff(pr,[12 4],{'logsig', 'logsig'}, 'traingdx', 'learngdm');
%建立BP神经网络, 12个隐层神经元,4个输出神经元
%tranferFcn属性 'logsig' 隐层采用Sigmoid传输函数
%tranferFcn属性 'logsig' 输出层采用Sigmoid传输函数
%trainFcn属性 'traingdx' 自适应调整学习速率附加动量因子梯度下降反向传播算法训练函数
%learn属性 'learngdm' 附加动量因子的梯度下降学习函数
net.trainParam.epochs=1000;%允许最大训练步数2000步
net.trainParam.goal=0.001; %训练目标最小误差0.001
net.trainParam.show=10; %每间隔100步显示一次训练结果
net.trainParam.lr=0.05; %学习速率0.05
bpnet=train(bpnet,P,T);
%-------------------------------------------------------------------------
p=[110 1.318 300 0.1 15 2 18 1 2];
p=p'/m;
r=sim(bpnet,p);
R=r'*n;
display(R);
运行的结果是出现这样的界面
点击performance,training state,以及regression分别出现下面的界面
再搜索,发现可以通过神经网络工具箱来创建神经网络,比较友好的GUI界面,在输入命令里面输入nntool,就可以开始了。
点击import之后就出现下面的具体的设置神经网络参数的对话界面,
这是输入输出数据的对话窗
首先是训练数据的输入
然后点击new,创建一个新的神经网络network1,并设置其输入输出数据,包括名称,神经网络的类型以及隐含层的层数和节点数,还有隐含层及输出层的训练函数等
点击view,可以看到这是神经网络的可视化直观表达
创建好了一个network之后,点击open,可以看到一个神经网络训练,优化等的对话框,选择了输入输出数据后,点击train,神经网络开始训练,如右下方的图,可以显示动态结果
下面三个图形则是点击performance,training state以及regression而出现的
下面就是simulate,输入的数据是用来检验这个网络的数据,output改一个名字,这样就把输出数据和误差都存放起来了
在主界面上点击export就能将得到的out结果输入到matlab中并查看
下图就是输出的两个outputs结果
还在继续挖掘,to be continue……
『玖』 如何用MATLAB神经网络工具箱创建BP神经网络模型
1. 常用的前馈型BP网络的转移函数有logsig,tansig,有时也会用到线性函数purelin。当网络的最后一层采用曲线函数时,输出被限制在一个很小的范围内,如果采用线性函数则输出可为任意值。以上三个函数是BP网络中最常用到的函数,但是如果需要的话你也可以创建其他可微的转移函数。
2. 在BP网络中,转移函数可求导是非常重要的,tansig、logsig和purelin都有对应的导函数dtansig、dlogsig和dpurelin。为了得到更多转移函数的导函数,可以带字符"deriv"的转移函数:tansig('deriv')
『拾』 matlab中bp神经网络的工具箱怎么用,不要matlab程序,就工具箱怎么实现问题的解决
matlab中神经网络的工具箱:输入nntool,就会弹出一个对话框,然后你就可以根据弹出框的指示来操作。