1. 如何用matlab编写BP神经网络程序
matlab编写BP神经网络很方便的,这个工作不用像编程序的C什么的那样还要编写算法。这个算法早已经在软件的库里提供了。你只要用一条语句就出来了。把参数,深度和节点固定的往里一代数就可以了。还有一点,注意最后结果的收敛性,神经网络发展一直是曲折前进的,为什么这样,现在不太给力,因为面临着一个收敛的问题,实现起来效果不好。这些程序网上有很多,你借一本基本的神经网络的书里面也有。望采纳。
2. 下图用matlab怎么编bp算法代码
%读取训练数据
[f1,f2,f3,f4,class] = textread('trainData.txt' , '%f%f%f%f%f',150);
%特征值归一化
[input,minI,maxI] = premnmx( [f1 , f2 , f3 , f4 ]') ;
%构造输出矩阵
s = length( class) ;
output = zeros( s , 3 ) ;
for i = 1 : s
output( i , class( i ) ) = 1 ;
end
%创建神经网络
net = newff( minmax(input) , [10 3] , { 'logsig' 'purelin' } , 'traingdx' ) ;
%设置训练参数
net.trainparam.show = 50 ;
net.trainparam.epochs = 500 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;
%开始训练
net = train( net, input , output' ) ;
%读取测试数据
[t1 t2 t3 t4 c] = textread('testData.txt' , '%f%f%f%f%f',150);
%测试数据归一化
testInput = tramnmx ( [t1,t2,t3,t4]' , minI, maxI ) ;
%仿真
Y = sim( net , testInput )
%统计识别正确率
[s1 , s2] = size( Y ) ;
hitNum = 0 ;
for i = 1 : s2
[m , Index] = max( Y( : , i ) ) ;
if( Index == c(i) )
hitNum = hitNum + 1 ;
end
end
sprintf('识别率是 %3.3f%%',100 * hitNum / s2 )
看了你的数据,你至少要有的类标号吧,不知道你哪里是输入向量,哪里是输出向量
3. matlab BP神经网络训练程序求解释
楼主解决没?这是我知道的
[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %归一化数据,方便后面的预测
net.trainParam. show = 100; %这里的show是显示步数,每100步显示一次
net.trainParam.goal=0.0001; %目标误差,训练得到的数据和原始输入
net.trainParam.lr = 0.01; %lr是学习动量,一般越小越好
y1=sim(net,pn); %sim用来预测的
xlswrite('testdata6',tnew1); ?这里的testdata6是excel表格的名称
你可以看看书的,书上都有介绍
4. matlab程序 BP神经网络预测 程序如下:
P=[。。。];输入T=[。。。];输出
% 创建一个新的前向神经网络
net_1=newff(minmax(P),[10,1],,'traingdm')
% 当前输入层权值和阈值
inputWeights=net_1.IW
inputbias=net_1.b
% 当前网络层权值和阈值
layerWeights=net_1.LW
layerbias=net_1.b
应该没问题吧。
5. BP算法在一个matlab程序中可以区分几类数据
在BP分类中,输出神经元的个数理论上是没有限制的,就是说你分几类都是可以的。
6. 用Matlab算BP神经网络的具体算法
BP神经网络的传递函数一般采用sigmiod函数,学习算法一般采用最小梯度下降法;下面是具体的程序例子:
例1 采用动量梯度下降算法训练 BP 网络。
训练样本定义如下:
输入矢量为
p =[-1 -2 3 1
-1 1 5 -3]
目标矢量为 t = [-1 -1 1 1]
解:本例的 MATLAB 程序如下:
close all
clear
echo on
clc
% NEWFF——生成一个新的前向神经网络
% TRAIN——对 BP 神经网络进行训练
% SIM——对 BP 神经网络进行仿真
pause
% 敲任意键开始
clc
% 定义训练样本
% P 为输入矢量
P=[-1, -2, 3, 1; -1, 1, 5, -3];
% T 为目标矢量
T=[-1, -1, 1, 1];
pause;
clc
% 创建一个新的前向神经网络
net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')
% 当前输入层权值和阈值
inputWeights=net.IW{1,1}
inputbias=net.b{1}
% 当前网络层权值和阈值
layerWeights=net.LW{2,1}
layerbias=net.b{2}
pause
clc
% 设置训练参数
net.trainParam.show = 50;
net.trainParam.lr = 0.05; 学习速率
net.trainParam.mc = 0.9; 动量系数
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
pause
clc
% 调用TRAINGDM 算法训练 BP 网络
[net,tr]=train(net,P,T);
pause
clc
% 对 BP 网络进行仿真
A = sim(net,P)
% 计算仿真误差
E = T - A
MSE=mse(E)
pause
clc
echo off
7. 求一个用matlab实际的bp算法
首先对于数据进行归一化,我就不用matlab里面的代码了
maxP = max(max(p));
p = p';
Input = p(:, 1:4)./maxP;
Target = p(:, 2:5)./maxP;
netP = newff(Input, Target, 10);
netP = train(netP, Input, Target);
上面这个神经网络预测下一年的P值
P09_13 = zeros(6, 5)
for i = 1:5
if i == 1
P09_13(:, i) = sim(net, p(:, 5));
else
P09_13(:, i) = sim(net, P09_13(:, i-1));
end
end
以上得到09-13年预测出来的p值
下面求p-t之间的关系
Input = p./maxP;
Target =t./maxP;
net = newff(Input, Target, 10);
net = train(net, Input, Target);
以上代码求出了p-t对应关系
preliminaryResult = zeros(1, 5);
for i = 1:5
preliminaryResult = sim(net, P09_13(:, i));
end
result = preliminaryResult.*maxP;
result里面是09-13年预测出来的房价。
我没给你实际跑这个程序,明天就交论文你这个点求助我就不说你什么了。我估计应该没错误。
听天由命吧,少年。
8. bp神经网络算法 在matlab中的实现
BP神经网络是最基本、最常用的神经网络,Matlab有专用函数来建立、训练它,主要就是newff()、train()、sim()这三个函数,当然其他如归一化函数mapminmax()、其他net的参数设定(lr、goal等)设置好,就可以通过对历史数据的学习进行预测。附件是一个最基本的预测实例,本来是电力负荷预测的实例,但具有通用性,你仔细看看就明白了。
9. matlab编程关于BP算法的问题
clear
P=[...]%输入
T=[...]%输出
% 创建一个新的前向神经网络
net_1=newff(minmax(P),[10,1],{'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 = 1000;
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=[1 2 3]'
sim(net_1,x)
10. 用matlab实现bp算法,对样本进行训练
P=[5.700 3.800 0.3175 2.33;
4.550 3.050 0.3175 2.33;
2.950 1.950 0.3175 2.33;
1.950 1.300 0.3175 2.33;
1.400 0.900 0.3175 2.33;
1.200 0.800 0.3175 2.33;
1.050 0.700 0.3175 2.33;
1.700 1.100 0.9525 2.33;
1.700 1.100 0.1524 2.33;
4.100 4.140 0.1524 2.50;
10.80 4.140 0.1524 2.50;
0.850 1.290 0.0170 2.22;
2.000 2.500 0.0790 2.22;
1.063 1.183 0.0790 2.55;
0.910 1.000 0.1270 10.2;
1.720 1.860 0.1570 2.33;
1.270 1.350 0.1630 2.55;
1.500 1.621 0.1630 2.55;
1.120 1.200 0.2420 2.55;
1.403 1.485 0.2520 2.55;
1.530 1.630 0.3000 2.50;
0.905 1.018 0.3000 2.50;
1.170 1.280 0.3000 2.50;
0.776 1.080 0.3300 2.55;
0.790 1.255 0.4000 2.55;
0.987 1.450 0.4500 2.55;
0.814 1.440 0.4760 2.55;
0.970 1.620 0.5500 2.55;
1.200 1.970 0.6260 2.55;
0.783 2.300 0.8540 2.55;
0.974 2.620 0.9520 2.55;
1.020 2.640 0.9520 2.55;
0.883 2.676 1.0000 2.55;
0.777 2.835 1.1000 2.55;
0.920 3.130 1.2000 2.55;
1.265 3.500 1.2810 2.55;
1.080 3.400 1.2810 2.55];
%输入
T=[ 2310;
2890;
4240;
5840;
7700;
8270;
9140;
4730;
7870;
2228;
2181;
7740;
3970;
7730;
4600;
5060;
6560;
5600;
7050;
5800;
5270;
7990;
6570;
8000;
7134;
6070;
6380;
5990;
4660
4600;
3980;
3900;
3980;
3900;
3470;
2980;
3150];
%输出
P=P';
T=T';
% 创建一个新的前向神经网络
net_1=newff(minmax(P),[10,1],{'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 = NaN;
net_1.trainParam.lr = 0.05;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 10000;
net_1.trainParam.goal = 1e-6;
% 调用 TRAINGDM 算法训练 BP 网络
[net_1,tr]=train(net_1,P,T)