导航:首页 > 五金知识 > BP分类工具箱

BP分类工具箱

发布时间:2022-10-23 13:06:19

Ⅰ matlab中bp神经网络的工具箱怎么用,不要matlab程序,就工具箱怎么实现问题的解决

matlab中神经网络的工具箱:输入nntool,就会弹出一个对话框,然后你就可以根据弹出框的指示来操作。

Ⅱ matlabBP神经网络工具箱,可以调整隐含层节点数嘛

Matlab神经网络工具箱几乎包含了现有神经网络的最新成果,神经网络工具箱模型包括感知回器、线性网络、答BP网络、径向基函数网络、竞争型神经网络、自组织网络和学习向量量化网络、反馈网络BP神经网络具有很强的映射能力,主要用于模式识别分类、函数逼近、函数压缩等。下面通过实例来说明BP网络在函数逼近方面的应用需要逼近的函数是f(x)=1+sin(k*pi/2*x),其中,选择k=2进行仿真,设置隐藏层神经元数目为n,n可以改变,便于后面观察隐藏层节点与函数逼近能力的关系。

Ⅲ 请大师指点:BP网络工具箱中的newff()中的参数如何设置

threshold是一个限定BP网络输出的范围
在它规定的范围内为有效(当无效值太多的时候会early stop)
[9,4]代表输入输出的专神经元数目
学习速度关属系到误差梯度的调整,由于误差梯度是由误差对权值的求导得出的,我们加上一个学习速度的系数可以加快或减慢权值调整的速度.一般在0.1~0.8之间.当然也可以用可变学习速率的训练函数进行,这样学习速率可以在开始的时候大一些,而后减小,优化学习过程.

Ⅳ BP神经网络工具箱process

  1. 每次训练,网络的初始权值都不同,因此BP算法的每次迭代、权值修正都不相同。可以认为每次训练都充满了随机性,这也是有时训练会陷入局部极小点,而有时并不会的原因。

  2. performance就是指网络最后的性能,你之前设定的net.trainParam.goal=0.00001;就是这个指标。MATLAB训练时测试样本的输出误差达到这个设定值,训练就停止了。

  3. 以右边的值为准,中间框子里的值是不断变化的,当走到最右端时就达到了预设目标。

Ⅳ bp神经网络只有一类样本怎么分类

神经网络一列为一个样本,所以对于matlab 而言,要求输入和输出的列数必须一样的
经常有人问起的问题:
Error using ==> network/train
Targets are incorrectly sized for network.
Matrix must have 1 rows.
解决:要求P T 的列数一样 ,如果不一样 P=p’ t=t’ 转置一下
2.
归一
澄清一个对归一的错误理解1
样本矩阵为9行4列。9组样本,4个变量。现在归一化:
x=[68.7 66.6 5610 19.2;
89.9 90.8 4500 11.8;
120.8 120.6 6800 20.6;
169 40.4 6160 40.6;
180.8 69.8 7330 33.4;
190.3 130.2 7320 31.6;
109.8 151.1 5754 86.1;
33.2 61.4 8255 22.6;
111.7 126.6 7040 13.6;]
写法一:
for i=1:9
x1(i,:)=(x(i,:)-min(x(i,:)))/(max(x(i,:))-min(x(i,:)))
end
结果:
0.0089 0.0085 1.0000 0
0.0174 0.0176 1.0000 0
0.0148 0.0148 1.0000 0
0.0210 0 1.0000 0.0000
0.0202 0.0050 1.0000 0
0.0218 0.0135 1.00 00 0
0.0042 0.0115 1.0000 0
0.0013 0.0047 1.0000 0
0.0140 0.0161 1.0000 0

写法二:
x=x'
for i=1:4
x1(i,:)=(x(i,:)-min(x(i,:)))/(max(x(i,:))-min(x(i,:)))
end
结果:
Columns 1 through 8

0.2260 0.3609 0.5576 0.8644 0.9395 1.0000 0.4876 0
0.2367 0.4553 0.7245 0 0.2656 0.8112 1.0000 0.1897
0.2956 0 0.6125 0.4421 0.7537 0.7510 0.3340 1.0000
0.0996 0 0.1184 0.3876 0.2907 0.2665 1.0000 0.1454

Column 9

0.4997
0.7787
0.6764
0.0242
注意:写法2为正确的归一化

对归一的错误理解2
将数据集分为训练集和测试集,对训练集和测试集分别做归一处理
所以就会有人问 如果我的测试集只有一个数据 如何归一呀
最大最小值从那里找呀
正确的理解是:
训练集和测试集的归一标准是一样的
建议:
如果训练集和测试集是一起归一的 可以自己编程实现归一
如果是训练集和测试集是分开的,最好是使用matlab自带的premnmx、postmnmx、tramnmx 函数
如果是自己编程的话 ,请注意训练集和测试集的归一标准需要一样
premnmx、postmnmx、tramnmx 函数
的使用例子如下:
Example

Here is the code to normalize a given data set so
that the inputs and targets will fall in the
range [-1,1], using PREMNMX, and the code to train a network
with the normalized data.

p = [-10 -7.5 -5 -2.5 0 2.5 5 7.5 10];
t = [0 7.07 -10 -7.07 0 7.07 10 7.07 0];
[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t);
net = newff(minmax(pn),[5 1],{'tansig' 'purelin'},'trainlm');
net = train(net,pn,tn);

If we then receive new inputs to apply to the trained
network, we will use TRAMNMX to transform them
first. Then the transformed inputs can be used
to simulate the previously trained network. The
network output must also be unnormalized using
POSTMNMX.

p2 = [4 -7];
[p2n] = tramnmx(p2,minp,maxp);
an = sim(net,pn);
[a] = postmnmx(an,mint,maxt);

这个是归一到-1 和 1 之间 那我要归一到0 1 之间怎么办
有人说可以使用加绝对值就归一到 0 1之间了
我觉得加绝对值可能会有些问题
比较好的方式是变换
P 在-1 1 之间
Pp=(p+1)/2 就可以归一到0 1之间
至于要归一到0.1- 0.9 之间 选取合适的变换就可以做到了
二、神经网络(BP)系列(2)(初学者系列)每次结果不一样解析
这个系列主要针对使用matlab 神经网络工具箱,对一些初学者容易理解错误的地方进行解析。
神经网络每次结果不同解析
神经网络每次结果不同是因为初始化的权值和阈值是随机的
因为每次的结果不一样,才有可能找到比较理想的结果啊
找到比较好的结果后,用命令save filename net;保存网络,
可使预测的结果不会变化,调用时用命令load filename net;
取p_test=[ ];
t_test=[ ];
t=sim(net,p_test);
err=t_test-t;
plot(p_test,err);
选择误差小的保存网络
save filename net
以后调用时
load filename net
p_test=[ ];
t_test=[ ];
t=sim(net,p_test);
err=t_test-t;
plot(p_test,err):
因为每次初始化网络时都是随机的,而且训练终止时的误差也不完全相同,结果训练后的权植和阀也不完全相同(大致是一样的),所以每次训练后的结果也略有不同
举个例子,这样初始化就能使网络的输出结果是一样的,另外也可以给网络特定的权值,一种方法是把预测结果后的效果比较好的权值做为初值
p=[0.8726 0.9441 0;0 0 0.7093;0.7378 0.7093 0.3795;0.6416 0.3795 0.7031;1 0.7031 0.4241;0.7774 0.4241 0.9559;0.9559 0.5012 0.7052;...
0.8209 0.7052 0.4983;0.6011 0.4983 1;]';
t=[0 0.7378 0.6416 1 0.7774 0.5012 0.8209 0.6011 0.9350];
rand('state',0);
net=newff(minmax(p),[6,1],{'tansig','logsig'},'trainlm');
net.trainParam.epochs=2000;
net.trainParam.goal=0.001;
net=train(net,p,t);
y=sim(net,p);
error=y-t;
res=norm(error);
p_test=[0.9350 1 0.6236;]';
t_test=[ 0.8027]
a=sim(net,p_test)
rand('state',0);
这个的作用是每次初始化一样
0是种子数,如果换成其他数,就可以产生不同的随机值
注: rand('state',0);的使用有点为结果相同而相同,至于这样的结果网络性能是否达到好的要求则没有考虑,建议还是不要用这种方法使每次结果相同
用保存网络的方法吧
消除初值影响可以考虑的另一个方法是简单集成神经网络
原理
由于选择不同的权值所得结果不同,使最终神经网络泛化能力体现出一定的随机性。利用这个特性也可以改善神经网络的泛化能力,神经网络集成便是利用这种思路的体现,即先训练一组只有初始权值不同的子网,然后通过各子网“表决(Voting)” 的形式(如加权和)得到学习系统的输出。
当神经网络集成用于分类器时,集成的输出通常由个体网络的输出投票产生。通常利用绝对多数投票法(某分类成为最终结果当且仅当输出结果为该分类的神经网络的数目最多)。理论分析和大量实验表明,后者优于前者。因此,在对分类器进行集成时,目前大多采用相对多数投票法。
当神经网络集成用于回归估计时,集成的输出通常由各网络的输出通过简单平均或加权平均产生。Perrone等人认为,采用加权平均可以得到比简单平均更好的泛化能力。

三、神经网络(BP)系列(3)(初学者请看)分类实例
分类实例
输入输出设计:
对某一问题分析,影响网络性能的输入主要有5个指标,输出则分为8类。8类的话可以用三位二进制表示。
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
神经网络的输入为5维的向量,输出为三维的向量。输入的数据具有不同的单位和量级,所以在输入在输入神经网络之前应该首先进行归一化处理,将样本数据归一到0 1之间。
样本总共有328组数据
将样本集分为训练集和测试集
随机抽取70取做为测试测试集
其余的作为训练集
网络设计
采用tansig(x)和logsig(x)函数作为传输函数,tansig(x)如下式:
tansig=2/(1+exp(-2x))-1
logsig(x) 如下式:
logsig(x) = 1 / (1 + exp(-n))
对于有限个输入到输出的映射,并不需要无限个隐层节点,这就涉及到如何选择隐层节点数的问题,而这一问题的复杂性,使得至今为止尚未找到一个很好的解析 式,隐层节点数往往根据前人设计所得的经验和自己进行试验来确定。设计网络时我采用的方法是通过神经网络训练来确定隐含层的个数,首先确定隐含层中节点数目的范围,设计一个隐含层神经元数目可变的BP网络,通过误差对比,确定最佳的隐含层神经元的个数。最后确定的隐含层的个数为12。所以网络结构为 5-12-3的三层结构。
load('CSHuju1.mat');
p=CC1(:,[1,3:6])';
T=[0 0 0;
1 1 1;
1 1 0;
1 0 1;
1 0 0;
0 1 1;
0 1 0;
0 0 1];
t=repmat(T,41,1)';
pp=p;
%%%%%%归一到 0 1 之间
for i=1:5
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
AllSamNum=328;%总样本数
TrainSamNum=258;%训练样本数
TestSamNum=AllSamNum-TrainSamNum;%测试样本数
PerPos=randperm(AllSamNum);
TrainDataIn=p(:,1:TrainSamNum)
TrainDataOut=t(:,1:TrainSamNum)
TestDataIn=p(:,PerPos(:,TrainSamNum+1:TrainSamNum+TestSamNum))
TestDataOut=t(:,PerPos(:,TrainSamNum+1:TrainSamNum+TestSamNum))
MaxMin=[0 1; 0 1; 0 1; 0 1;0 1];
net=newff(MaxMin,[12,3],{'tansig','logsig'},'trainlm');
%训练参数设置
net.trainParam.epochs=1000;
%训练次数
net.trainParam.goal=0.0001;
%训练结束的目标
LP.lr=0.1;
%学习率
net.trainParam.show=20;
net=train(net,TrainDataIn,TrainDataOut);
out=sim(net,TestDataIn)

训练结果:
TRAINLM, Epoch 0/1000, MSE 0.296308/0.0001, Gradient 83.9307/1e-010
TRAINLM, Epoch 20/1000, MSE 0.0224641/0.0001, Gradient 6.7605/1e-010
TRAINLM, Epoch 40/1000, MSE 0.00563627/0.0001, Gradient 3.27027/1e-010
TRAINLM, Epoch 60/1000, MSE 0.00348587/0.0001, Gradient 1.49868/1e-010
TRAINLM, Epoch 80/1000, MSE 0.00247714/0.0001, Gradient 0.459233/1e-010
TRAINLM, Epoch 100/1000, MSE 0.0018843/0.0001, Gradient 0.289155/1e-010
TRAINLM, Epoch 120/1000, MSE 0.00148204/0.0001, Gradient 0.392871/1e-010
TRAINLM, Epoch 140/1000, MSE 0.00119585/0.0001, Gradient 0.340864/1e-010
TRAINLM, Epoch 160/1000, MSE 0.000980448/0.0001, Gradient 0.391987/1e-010
TRAINLM, Epoch 180/1000, MSE 0.000779059/0.0001, Gradient 0.389835/1e-010
TRAINLM, Epoch 200/1000, MSE 0.000606974/0.0001, Gradient 0.310202/1e-010
TRAINLM, Epoch 220/1000, MSE 0.000388926/0.0001, Gradient 0.331632/1e-010
TRAINLM, Epoch 240/1000, MSE 0.000143563/0.0001, Gradient 0.0403953/1e-010
TRAINLM, Epoch 248/1000, MSE 9.87756e-005/0.0001, Gradient 0.174263/1e-010
TRAINLM, Performance goal met.
训练好的权值、阈值的输出方法是:
输入到隐层权值:w1=net.iw{1,1}
隐层阈值:theta1=net.b{1}
隐层到输出层权值:w2=net.lw{2,1};
输出层阈值:theta2=net.b{2}
>>w1=net.iw{1,1}

w1 =

1.7663 -2.8022 -0.7142 -2.1099 -2.4011
3.6614 -2.5297 -4.4295 5.0508 8.1899
4.4007 7.6775 -6.0282 6.1567 1.8775
4.5009 -9.9915 5.9737 5.0234 3.3931
0.2703 -2.8850 0.4482 -2.9153 1.3648
2.3769 3.3151 0.8745 3.1900 1.2608
-2.2815 -6.6847 1.8738 2.4093 -2.9033
-5.3332 6.1506 -8.4386 -6.7979 3.1428
-0.0135 -10.8942 -9.6333 7.2311 12.0693
2.3130 5.2211 0.0155 2.9431 0.3135
-6.4017 -0.8987 0.1976 3.2527 0.1444
-3.6517 -1.6339 3.5505 2.4813 1.7880
>> theta1=net.b{1}

theta1 =

0.5955
-5.4876
-9.8986
-4.4731
3.6523
-4.0371
5.6187
5.7426
0.9147
-8.5523
-2.3632
-5.6106
>> w2=net.lw{2,1}

w2 =

Columns 1 through 8

-0.2751 -3.5658 -2.3689 -6.4192 -1.1209 1.5711 -1.7615 7.6202
-1.2874 -9.1588 -14.4533 7.5064 3.7074 0.9019 8.7033 -5.0031
3.3536 -0.8844 7.8887 0.9336 0.8410 -2.4905 1.0627 -9.3513

Columns 9 through 12

-2.5894 -1.9950 -3.0132 -4.7009
13.3490 -9.8521 -4.6680 -4.2037
-5.9251 2.9388 -1.6797 -2.1077
>> theta2=net.b{2}

theta2 =

-2.4762
0.5692
0.6694
输出:
out =

Columns 1 through 8

1.0000 1.0000 0.0020 0.0000 1.0000 1.0000 0.0000 0.0000
1.0000 0.0000 0.0041 1.0000 1.0000 1.0000 1.0000 1.0000
0.9991 0.0000 0.0036 0.0015 0.9992 0.9985 0.0055 0.0036

Columns 9 through 16

1.0000 0.0000 0.0019 1.0000 0.0000 0.0000 0.0000 0.9996
1.0000 1.0000 0.9901 1.0000 1.0000 1.0000 1.0000 0.0000
0.9977 0.9999 0.9996 0.9994 0.0046 0.0023 0.0014 1.0000

Columns 17 through 24

0.0020 0.9925 0.0020 0.0000 0.0020 1.0000 0.0002 1.0000
0.0041 0.0284 0.0041 0.0284 0.0041 1.0000 0.9983 1.0000
0.0036 0.9955 0.0036 1.0000 0.0036 0.9989 0.9999 0.9990

Columns 25 through 32

1.0000 0.9938 1.0000 0.0000 1.0000 0.9999 0.0000 1.0000
1.0000 0.0177 0.0000 0.0021 1.0000 0.0006 1.0000 1.0000
0.0000 0.9971 0.0000 1.0000 0.0000 0.0004 0.9999 0.0000

Columns 33 through 40

0.9954 1.0000 0.0000 0.0000 0.9951 0.0020 0.0000 0.9997
0.0065 1.0000 1.0000 0.0025 0.0178 0.0041 1.0000 0.0000
0.9986 0.9990 0.9999 1.0000 0.0101 0.0036 0.0013 1.0000

Columns 41 through 48

0.0000 1.0000 0.9983 0.0000 0.0020 1.0000 0.0000 0.9873
0.0020 1.0000 0.0000 0.0037 0.0041 1.0000 0.0328 0.0637
1.0000 0.0000 0.9999 1.0000 0.0036 0.9982 1.0000 0.9884

Columns 49 through 56

0.0000 0.0001 1.0000 1.0000 1.0000 0.0000 0.0004 1.0000
0.0164 0.9992 0.9982 1.0000 1.0000 1.0000 0.9965 0.9998
1.0000 0.9999 0.9948 0.9991 0.9989 0.0024 0.9998 0.9968

Columns 57 through 64

1.0000 1.0000 0.0000 0.0020 0.0020 0.0001 0.0001 0.0000
0.9763 1.0000 0.0134 0.0041 0.0041 0.9990 0.0395 0.0017
0.0202 0.9988 1.0000 0.0036 0.0036 0.9999 0.9999 1.0000

Columns 65 through 70

0.9993 0.0000 0.0000 0.9978 1.0000 1.0000
0.0000 0.0018 0.0110 0.0001 1.0000 0.9998
1.0000 1.0000 1.0000 0.9999 0.9987 0.0007
每次结果因为初始化不同会不一样,可以选取一个性能比较好的网络
保持起来
save myBpNet net
save myShu.mat TestDataIn TestDataOut
测试数据也保存起来
(TestDataIn TestDataOut 为测试数据的输入向量和目标向量)
以后调用时
load myshu.mat
load myBpNet net
out=sim(net,TestDataIn)
基本框架程序:(前面的样本数据自己根据实际情况设计)
load('CSHuju1.mat');
p=CC1(:,[1,3:6])';
T=[0 0 0;
1 1 1;
1 1 0;
1 0 1;
1 0 0;
0 1 1;
0 1 0;
0 0 1];
t=repmat(T,41,1)';
pp=p;
%%%%%%归一到 0 1 之间
for i=1:5
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
AllSamNum=328;%总样本数
TrainSamNum=258;%训练样本数
TestSamNum=AllSamNum-TrainSamNum;%测试样本数
PerPos=randperm(AllSamNum);
TrainDataIn=p(:,1:TrainSamNum)
TrainDataOut=t(:,1:TrainSamNum)
TestDataIn=p(:,PerPos(:,TrainSamNum+1:TrainSamNum+TestSamNum))
TestDataOut=t(:,PerPos(:,TrainSamNum+1:TrainSamNum+TestSamNum))
MaxMin=[0 1; 0 1; 0 1; 0 1;0 1];
net=newff(MaxMin,[12,3],{'tansig','logsig'},'trainlm');
net.trainParam.epochs=1000;
%训练次数
net.trainParam.goal=0.0001;
%训练结束的目标
LP.lr=0.1;
%学习率
net.trainParam.show=20;
net=train(net,TrainDataIn,TrainDataOut);
out=sim(net,TestDataIn)

Ⅵ 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 中神经网络工具箱使用:帮我解释下这段创建BP神经网络,用于数据分类的结果

从你的代码上看,返回来的不是0就是1,是分类的结果啊!

Ⅷ 需要把MATLAB中的BP神经网络工具箱与自己的一个软件项目结合

这个就是C++与matlab混合编程。但是神经网络工具箱比较特别,它反盗用比较严厉。采用回传统的混答编方式,可以调用matlab自己的函数,但无法成功调用神经网络工具箱。这一点在mathwork网站上也做了说明。

以C#为例,一般混编有四种方式:
(1)利用Matlab自身编译器,目的是将m文件转换为c或c++的源代码。
(2)利用COM或.NET组件技术。通过MATLAB中的Deploy tool工具将m文件编译成dll,然后在系统中调用。
(3)利用Mideva平台。没尝试过。
(4)利用MATLAB引擎技术。该方法相当于在.NET中运行MATLAB程序,获取其结果。优点是操作简单,过程简易。缺点是需要安装Matlab软件。

如果要调用神经网络工具箱,只有使用第四种方法,即引擎技术,其他方法都不可行。这种混编方式仅仅传递参数,因此不涉及到神经网络工具箱的代码,也就没有了防盗用限制。

Ⅸ bp神经网络 matlab 工具箱怎么调出来

有神经网络的工具箱,bp是配出来的!

Ⅹ bp神经网络matlab工具箱建模结果

你用的是matlab的神经网络工具箱吧。那是因为权值和阈值每次都是随机初始化的专,所以结果属就会不一样,
你可以把随机种子固定,即在代码前面加上setdemorandstream(pi); 这样每次训练出来的结果都是一样的了。

看来楼主是刚开始学习神经网络的,推荐一些资料给楼主:
神经网络之家 (专讲神经网络的网站,有视频下载)

matlab中文论坛的神经网络专区
数学中国的神经网络专区

较好的书:
MATLAB神经网络原理与实例精解

阅读全文

与BP分类工具箱相关的资料

热点内容
收购哪些废旧专用器材违法 浏览:763
磷化氢浓度检测装置 浏览:974
科学研究的器材有哪些 浏览:359
带式输送机传动装置百度百科 浏览:213
电缆电气试验有哪些仪器 浏览:211
光伏发电对制冷有什么影响 浏览:860
乙酰苯胺的制备实验装置 浏览:890
实现高层互联的设备是什么 浏览:620
变电站保护装置安装调试验收的作用 浏览:600
机械表半弦是什么状态 浏览:51
开家纺织厂需要哪些机械设备 浏览:240
万向传动装置在汽车的典型应用 浏览:144
添加不上打印机设备怎么办 浏览:73
东莞市常平风昱五金制品厂 浏览:46
途观后轮轴承如何拆卸 浏览:676
机械键盘多少钱做好 浏览:809
过氧化氢酶的实验装置 浏览:361
汽车仪表上ab是什么意思 浏览:813
仪器夹手指头测过敏是什么原理 浏览:484
机械地意思是什么原因 浏览:640