楼主: xiaogangma
12860 15

[问答] GA优化BP神经网络程序出错 [推广有奖]

  • 0关注
  • 2粉丝

已卖:202份资源

本科生

47%

还不是VIP/贵宾

-

威望
0
论坛币
120 个
通用积分
0.3000
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
2167 点
帖子
113
精华
0
在线时间
72 小时
注册时间
2009-5-6
最后登录
2020-1-5

楼主
xiaogangma 发表于 2011-9-20 14:48:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我用GA程序优化40-15-3的神经网络,结果显示错误
??? Error using ==> network.subsasgn at 551
net.b{2} must be a 3-by-1 matrix.

Error in ==> fun at 30
net.b{2}=B2;

以下是代码:
clc
clear
%网络结构
inputnum=40;
hiddennum=15;
outputnum=3;
%读取数据
p=xlsread('network.xlsx','sheet3');
t=xlsread('network.xlsx','sheet4');
input_train=[p(:,1:11),p(:,15)];
input_test=p(:,12:14);
output_train=[t(:,1:11),t(:,15)];
output_test=t(:,12:14);
%数据归一化
[input1,ps]=mapminmax(input_train);
input2=mapminmax('apply',input_test,ps);
%建立网络
net=newff(input1,output_train,15);
%遗传算法参数初始化
maxgen=50
%迭代次数
sizepop=10
%种群规模
pcross=[0.4]
%交叉概率
pmutation=[0.2]
%变异概率
%节点总数
numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;


lenchrom=ones(1,numsum);
%个体长度
bound=[-3*ones(numsum,1) 3*ones(numsum,1)];
%个体范围
%种群信息定义为结构体
individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);
avgfitness=[];
%每代平均适应度值
bestfitness=[];
%每代最佳适应度值
bestchrom=[];
%最优个体


%计算个体适应度值
for i = 1:sizepop

%个体初始化


individuals.chrom(i,:)=code(lenchrom,bound);

%计算个体适应度值

x=individuals.chrom(i,:);

individuals.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,input1,output_train);
end
%迭代寻优
for i =1:maxgen

%选择操作

individuals=select(individuals.sizepop);

%交叉操作

individuals.chrom=cross(pcross,lenchrom,individuals.chrom,sizepop,bound);

%变异操作

individuals.chrom=mutation(pmutation,lenchrom,individuals.chrom,sizepop,I,maxgen,bound);

%计算适应度值

for j=1:sizepop

x=individuals.chrom(j,:);
%个体

individuals.fitness(j)=fun(x,inputnum.hiddennum,outputnum,net,input1,output_train);

end

%寻找最优最差个体

[newbestfitness,newbestindex]=min(individuals.fitness);

[worestfitness,worestindex]=max(individuals.fitness);

%最优个体更新

ifbestfitness>newbestfitness

bestfitness=newbestfitness;

bestchrom=individuals.chrom(newbestindex,:);

end

individuals.chrom(worestindex,:)=bestchrom;

individuals.fitness (worestindex)=bestfitness;

%记录最优个体适应度值和平均适应度值

avgfitness=sum(individuals.fitness)/sizepop;

trace=[trace;avgfitness bestfitness];
end


%把最优个体x赋给BP神经网络权值和阀值
x=bestchrom


w1=x(1:inputnum*hiddennum);
b1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);
w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);
b2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);


net.iw{1,1}=reshape(w1,hiddennum,inputnum);
net.lw{2,1}=reshape(w2,outputnum,hiddennum);
net.b{1}=reshape(b1,hiddennum,1);
net.b{2}=b2;
%BP神经网络参数
net.trainparam.epochs=100;
net. trainparam.lr=0.1;
net. trainparam.goal=0.00001;
%BP神经网络训练
net= train(net,input1,output_train);
%BP神经网络预测
an=sim(net,input_test);


%%预测结果归一化
test=mapminmax(‘reverse’,an,outputps);

我看了好几遍,也不知道究竟是哪里出错,能不能请高手帮我看看?
祝学习进步,工作顺利!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:BP神经网络 神经网络 神经网 Individuals Individual Error 程序 网络

沙发
tulipsliu 在职认证  发表于 2011-9-21 11:17:11
b2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);
劳动经济学

藤椅
tulipsliu 在职认证  发表于 2011-9-21 11:17:35
??? Error using ==> network.subsasgn at 551
net.b{2} must be a 3-by-1 matrix.

Error in ==> fun at 30
net.b{2}=B2;
劳动经济学

板凳
tulipsliu 在职认证  发表于 2011-9-21 11:20:18
net.b{2}=reshape(b1,outputnum,1);
错误提示信息说,你的net.b{2}应该是一个 3x1 的矩阵,你参照net.b{1}试试,对b2进行正则表达。格式为3*1 的矩阵。
我不太了解你的模型和数据。就是根据错误提示猜测你的矩阵该怎么规范。
不知道能帮上忙不。
劳动经济学

报纸
dxmboy88 发表于 2011-9-21 13:12:59
这句net=newff(input1,output_train,15);是不是有问题?查一下help试试

地板
dxmboy88 发表于 2011-9-21 13:13:19
这句net=newff(input1,output_train,15);是不是有问题?查一下help试试

7
xiaogangma 发表于 2011-9-21 17:59:27
谢谢楼上几位的热心,特别市tulipsliu兄弟。
错误已经找到了,输出层应该是3*1的矩阵,我程序写错了
再次感谢

8
tulipsliu 在职认证  发表于 2011-9-21 21:13:30
没什么。注意参数传递。
有机会多交流。
劳动经济学

9
mangobarcelona 发表于 2016-6-17 16:54:00
您好,我也出现了同样的问题,请问是b2那出现问题了么?

10
mangobarcelona 发表于 2016-6-17 19:52:48
应该是输出的问题,怎么把输出换成4维的,求大神指点

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 13:19