1. 首页 > 科技

这种写法的bp神经网络,可以用哪个版本的,matlab运行,不报错! bp神经网络matlab

这种写法的bp神经网络,可以用哪个版本的,matlab运行,不报错!bp神经网络matlab

请教大神我的这个关于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'})