版块导航
正在加载中...
客户端APP下载
论文辅导
调剂小程序
登录
注册
帖子
帖子
用户
本版
应《网络安全法》要求,自2017年10月1日起,未进行实名认证将不得使用互联网跟帖服务。为保障您的帐号能够正常使用,请尽快对帐号进行手机号验证,感谢您的理解与支持!
24小时热门版块排行榜
>
论坛更新日志
(3305)
>
虫友互识
(517)
>
休闲灌水
(124)
>
导师招生
(119)
>
文献求助
(92)
>
硕博家园
(58)
>
考研
(40)
>
论文投稿
(38)
>
基金申请
(34)
>
考博
(32)
>
博后之家
(30)
>
论文道贺祈福
(28)
>
公派出国
(26)
>
教师之家
(22)
>
找工作
(20)
>
健康生活
(20)
小木虫论坛-学术科研互动平台
»
计算模拟区
»
程序语言
»
MATLAB/Mathematica
»
求助bp神经网络遗传算法出错。
5
1/1
返回列表
查看: 1874 | 回复: 4
只看楼主
@他人
存档
新回复提醒
(忽略)
收藏
在APP中查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖
dy1029
新虫
(正式写手)
应助: 7
(幼儿园)
金币: 447.6
红花: 3
帖子: 369
在线: 697.9小时
虫号: 2663043
注册: 2013-09-17
[交流]
求助bp神经网络遗传算法出错。
已有1人参与
最近在学习神经网络遗传算法,参照网上的一些代码:
CODE:
% 清空环境变量
clc
clear
%% 网络结构建立
%节点个数
inputnum=1;
hiddennum=5;
outputnum=1;
%训练数据和预测数据
input_train=[1 2 3 4 5 6 7 8 9 10];
input_test=[21 27 29 31 34 36 39 41 49 50];
output_train=[11 12 13 14 15];
output_test=[54 56 59 61 66];
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
%构建网络
net=newff(inputn,outputn,hiddennum);
%% 遗传算法参数初始化
maxgen=10; %进化代数,即迭代次数
sizepop=10; %种群规模
pcross=0.3; %交叉概率选择,0和1之间
pmutation=0.1; %变异概率选择,0和1之间
%节点总数
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); %编码(binary和grey的编码结果为一个实数,float的编码结果为一个实数向量)
x=individuals.chrom(i,:);
%计算适应度
individuals.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn); %染色体的适应度
end
%找最好的染色体
[bestfitness bestindex]=min(individuals.fitness);
bestchrom=individuals.chrom(bestindex,:); %最好的染色体
avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度
% 记录每一代进化中最好的适应度和平均适应度
trace=[avgfitness bestfitness];
%% 迭代求解最佳初始阀值和权值
% 进化开始
for i=1:maxgen
i
% 选择
individuals=Select(individuals,sizepop);
avgfitness=sum(individuals.fitness)/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,:);
x=individuals.chrom(j,:); %解码
individuals.fitness(j)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);
end
%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(individuals.fitness);
[worestfitness,worestindex]=max(individuals.fitness);
% 代替上一次进化中最好的染色体
if bestfitness>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
%% 遗传算法结果分析
figure(1)
[r c]=size(trace);
plot([1:r]',trace(:,2),'b--');
title(['适应度曲线 ' '终止代数=' num2str(maxgen)]);
xlabel('进化代数');ylabel('适应度');
legend('平均适应度','最佳适应度');
disp('适应度变量');
x=bestchrom;
%% 把最优初始阀值权值赋予网络预测
% %用遗传算法优化的BP网络进行值预测
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;
%网络训练
[net,per2]=train(net,inputn,outputn);
%% BP网络预测
%数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
an=sim(net,inputn_test);
test_simu=mapminmax('reverse',an,outputps);
error=test_simu-output_test;
[
Last edited by jjdg on 2018-7-28 at 00:40
]
回复此楼
» 猜你喜欢
球磨粉体时遇到了大的问题,请指教!
已经有15人回复
过年走亲戚时感受到了所开私家车的鄙视链
已经有5人回复
情人节自我反思:在爱情中有过遗憾吗?
已经有5人回复
江汉大学解明教授课题组招博士研究生/博士后
已经有3人回复
高级回复
1楼
2018-07-27 13:07:40
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
dy1029
新虫
(正式写手)
应助: 7
(幼儿园)
金币: 447.6
红花: 3
帖子: 369
在线: 697.9小时
虫号: 2663043
注册: 2013-09-17
错误使用 network/subsasgn>network_subsasgn (line 550)
net.b{2} must be a 1-by-1 matrix.
出错 network/subsasgn (line 10)
net = network_subsasgn(net,subscripts,v,netname);
出错 GA-bp (line 117)
net.b{2}=B2;
赞
一下
回复此楼
高级回复
5楼
2018-07-28 00:32:22
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
查看全部 5 个回答
dy1029
新虫
(正式写手)
应助: 7
(幼儿园)
金币: 447.6
红花: 3
帖子: 369
在线: 697.9小时
虫号: 2663043
注册: 2013-09-17
运行matlab后,出现:
错误使用 network/train (line 340)
Inputs and targets have different numbers of samples.
出错 fun (line 66)
net=train(net,inputn,outputn);
出错 main2 (line 92)
individuals.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn); %染色体
的适应度
三个问题,求助哪里有问题
赞
一下
回复此楼
2楼
2018-07-27 13:08:18
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
dy1029
新虫
(正式写手)
应助: 7
(幼儿园)
金币: 447.6
红花: 3
帖子: 369
在线: 697.9小时
虫号: 2663043
注册: 2013-09-17
利用遗传算法计算出神经网络的最佳权值,是输入输出数据维数出现问题吗?
还是适应度函数fun有问题?
赞
一下
回复此楼
3楼
2018-07-27 13:09:17
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
gemz10186
至尊木虫
(知名作家)
应助: 6
(幼儿园)
金币: 13349.6
散金: 9
红花: 5
帖子: 8387
在线: 432.7小时
虫号: 668562
注册: 2008-12-05
专业: 概率论与随机分析
★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
jjdg: 金币+1, 感谢参与
2018-07-28 00:41:11
输入输出维数不一致
发自小木虫IOS客户端
赞
一下
回复此楼
在小木虫顶帖是中华民族的美德
4楼
2018-07-27 15:21:00
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
查看全部 5 个回答
如果回帖内容含有宣传信息,请如实选中。否则帐号将被全论坛禁言
普通表情
龙
兔
虎
猫
高级回复
(可上传附件)
百度网盘
|
360云盘
|
千易网盘
|
华为网盘
在新窗口页面中打开自己喜欢的网盘网站,将文件上传后,然后将下载链接复制到帖子内容中就可以了。
信息提示
关闭
请填处理意见
关闭
确定