这种写法的bp神经网络,可以用哪个版本的,matlab运行,不报错! bp神经网络matlab
- 请教大神我的这个关于BP神经网络的MATLAB代码究竟出了什么错
- 我是初学,编的神经网络在matlab中运行出错了,求指点,谢谢!
- 有关BP神经网络的编程问题,用matlab,希望大家指点一下,谢谢!
- 我在使用MATLAB进行BP神经网络算法时,运行提示错误使用input,输入参数的项目不足,求大神指点
请教大神我的这个关于BP神经网络的MATLAB代码究竟出了什么错
clear;
clc;
shuru=[1305554.51 662938.89 877648.23 955254.91 1182286.47 605157.99 769639.28 1000855.67 1567936.19 712892.06 995621.47 1210817.23 1824825.89 805095.78 1357303.95 1913573.98 2221913.29 988940.37 1520540.25;
-535933.67 -265478.17 -358139.96 -390311.91 -484727.57 -240666.79 -312753.06 -408491.77 -644476.31 -284092.72 -405644.61 -495278.31 -750743.05 -320627.06 -555553.68 -786731.21 -914786.21 -395704.62 -622816.59;
190253.14 97770.16 127640.62 138952.91 172150.18 89252.23 111812.5 145619.16 228386.33 105038.33 144834.43 176107.03 265871.87 118663.71 197368.22 278538.97 323968.44 145708.66 220970.77 ];%'; %/(')for zhuanzhi
% 此处不能转置,matlab神经网络工具箱默认是以列为一个样本,所以此处shuru矩阵应为19*3
shuchu=[7510 7907 7432 6989 6760 7124 7548 7422 8333 8333 9375 11011 12045 13207 13592 13530 13963 15819 16118];
% 相对应的是shuchu的列数也应等于19
% 额外提醒:鉴于你给的数据量纲之间差别太大,最好进行归一化处理
net = newff(shuru,shuchu,19,{'tansig'},'trainscg');% 注意这是R2012b版本的newff函数,与以前版本的应用格式有点不同,所以会出现:NEWFF used in an obsolete way.的错误
% 另外输入和输出的矩阵必须保证列相等,因为它是以一列作为一个样本,在这个程序中,是3个输入对应一个输出,所以19个样本输入对应19个样本输出
net.divideParam.trainRatio=1; % 训练集所占总样本的比重
net.divideParam.valRatio=0; % 验证集所占总样本的比重
net.divideParam.testRatio=0; % 测试集所占总样本的比重
net.trainParam.show=50;% 显示步长
net.trainParam.lr=0.0001; % 学习速率
net.trainParam.epochs=800; % 最大迭代次数
net.trainParam.goal=0.00000001; % 训练目标,一般是用均方差(mse)来作为训练目标
[net,tr]=train(net,shuru,shuchu);
net.iw{1,1};%隐层权值
net.b{1};%隐层阈值
net.lw{2,1};%输出层权值
net.b{2};%输出层阈值
Pre=sim(net,shuru);
rr=corrcoef(shuchu,Pre); %线性相关系数
figure
plot(shuchu,'g');
hold on
plot(Pre,'r');
figure
plot(shuchu,Pre,'*');
title(['线性相关系数r=',num2str(rr(1,2))]);
xlabel('shuchu');
ylabel('PredictData');
我是初学,编的神经网络在matlab中运行出错了,求指点,谢谢!
你这是改人家的代码的吧.
看楼主做的是模式识别,可以参考<神经网络之家>nnetinfo里的<一个神经网络模式识别的例子------螃蟹>
你的代码有两个地方有错:
1. 'net.traimParam.epochs=1000;%训练步数' 里的traimParam应该是trainParam,后面几句也是.
2. newff里 [10,3],3代表输出是3个变量,而你的输出是一个变量.所以应该改为[10,1]
3. 改好的代码如下:
P=[329.820 332.869 328.685 329.011 332.596 337.584 330.125 333.822 331.888 336.239 329.090 332.724 334.409 336.184 337.622 332.897 327.786 330.213 329.179 340.234 337.217 333.563 333.259 337.763 330.012 334.876 335.324 331.829 333.317 328.841];%输出样本
T=[01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 10 10 10 10 10 10 10 10 10 10];
net=newff(minmax(P),[10,1],{'tansig','logsig'},'trainlm');%创建新的向前神经网络
net=init(net);%初始化函数iw1=net.IW{1};%层与层的权系数
b1=net.b{1};%层与层间神经元的阈值
iw2=net.IW{2};
b2= net.b{2};
net.trainParam.epochs=1000;%训练步数
net.trainParam.goal=0.0001;%目标误差
net.trainParam.Ir=0.1;%学习率
net=train(net,P,T);%训练指令
y=sim(net,P);%仿真
figure(1);
plot(y,'r+');
grid;
p=[330.624 335.042 331.995 335.497 330.140 328.075 328.010 334.200 332.044 331.983 371.688 375.61 377.571 383.452 373.206 375.863 375.041 369.156 373.902 369.599];
a=sim(net,p);%测试
hold on
plot(a,'bo')
有关BP神经网络的编程问题,用matlab,希望大家指点一下,谢谢!
P=[0.4 0.8 1;
0.4 0.6 0.4;
0. 0.6 0.8;
0.6 0.4 0.6;
0.3 0.9 0.1;
0.4 0.2 0.8;
0.6 0.4 0.5;
0.5 0.1 0.6;
0.2 0.6 0.3;
0.08 0.8 0.2;
0.2 1 0.5;
0.3 0.3 0.6;
0.1 0.6 0.03;
0.5 0.7 0.3;
0.2 0.8 0.4;
0.03 0.4 0.3;
1 0.3 0.3;
0.1 0 0.3]';
T=[34,41,38,44,30,45,49,47,34,32,36,45,30,43,33,28,48,40];
net=newff(minmax(P),[3,5,1],{'purelin','logsig','purelin'},'traingdm');
net=init(net);
net.trainParam.epochs=10000;
net.trainParam.goal=0.03;
net=train(net,P,T);
A = sim(net,P);
E = T - A;
MSE=mse(E);
P_test=[0.3 0.7 0.2;
0.2 0.6 0;
0 0.4 0.6;
0.2 0.5 0.1;
0.3 0.6 0.1]';
out=sim(net,P_test)
这样试试,对是用什么学习函数,只有自己试了,没有成熟的理论。
我在使用MATLAB进行BP神经网络算法时,运行提示错误使用input,输入参数的项目不足,求大神指点
newff()使用格式有错误。
将这句命令net=newff(minmax(inputn,outputn,5)
改为下列形式
net=newff(minmax(inputn),[10 1],{'tansig','purelin'})