当前位置: 首页 > news >正文

好看的网站建设网站建设课程教学计划

好看的网站建设,网站建设课程教学计划,苏州住房与城乡建设网站,搜索引擎怎么收录网站上一篇博客介绍了BP-GA:BP神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值,本篇博客将介绍用PSO(粒子群优化算法)优化BP神经网络。 1.优化思路 BP神经网络的隐藏节点通常由重复的前向传递和反向传播的方式来决定&#…

上一篇博客介绍了BP-GA:BP神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值,本篇博客将介绍用PSO(粒子群优化算法)优化BP神经网络。

1.优化思路

BP神经网络的隐藏节点通常由重复的前向传递和反向传播的方式来决定,通过修改或构造训练方式改隐藏的节点数,相应的初始权重和阈值也会随之变化,从而影响网络的收敛和学习效率。为了减少权重和阈值对模型的影响,采用粒子群算法对BP神经网络模型的权重和阈值进行优化,从而加快网络的收敛速度和提高网络的学习效率。

优化的重点在于如何构造关于模型权重和阈值的目标函数。将PSO(粒子群优化算法)的适应度函数设为预测效果和测试输出的误差绝对值,通过BP神经网络训练得到不同权重和阈值对应的适应度,当寻找的权重和阈值使得适应度最小,即误差最小时,则为最优权值和阈值,再将最优值返回用于构建BP神经网络。

2.测试函数

y = x 1 2 + x 2 2 y = x_1^2+x_2^2 y=x12+x22
要求:拟合未知模型(预测)。
条件:已知模型的一些输入输出数据。

已知一些输入输出数据(用rand函数生成输入,然后代入表达式生成输出):

for i=1:4000input(i,:)=10*rand(1,2)-5;output(i)=input(i,1)^2+input(i,2)^2;
end

3.完整代码

data.m

for i=1:4000input(i,:)=10*rand(1,2)-5;output(i)=input(i,1)^2+input(i,2)^2;
end
output=output';save data input output

PSO_BP_fun.m

function error = PSO_BP_fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn)%提取
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.trainParam.epochs=20;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00001;
net.trainParam.show=100;
net.trainParam.showWindow=0;%网络权值赋值
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;%网络训练
net=train(net,inputn,outputn);an=sim(net,inputn);error=sum(abs(an-outputn));

PSO_BP.m

%% 清空环境
clc
tic%读取数据
load data input output%节点个数
inputnum=2;
hiddennum=4;
outputnum=1;
opnum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;
% 需要优化的参数个数%% 训练数据预测数据提取及归一化
%从1到4000间随机排序
k=rand(1,4000);
[m,n]=sort(k);%划分训练数据和预测数据
input_train=input(n(1:3900),:)';
output_train=output(n(1:3900),:)';
input_test=input(n(3901:4000),:)';
output_test=output(n(3901:4000),:)';[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);%构建网络
net=newff(inputn,outputn,hiddennum);% 参数初始化
%粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;maxgen=100;   % 进化次数  
sizepop=30;   %种群规模%个体和速度最大最小值
Vmax=1;
Vmin=-1;
popmax=5;
popmin=-5;for i=1:sizepoppop(i,:)=5*rands(1,opnum);V(i,:)=rands(1,opnum);fitness(i)=PSO_BP_fun(pop(i,:),inputnum,hiddennum,outputnum,net,inputn,outputn);
end% 个体极值和群体极值
[bestfitness bestindex]=min(fitness);
zbest=pop(bestindex,:);   %全局最佳
gbest=pop;    %个体最佳
fitnessgbest=fitness;   %个体最佳适应度值
fitnesszbest=bestfitness;   %全局最佳适应度值%% 迭代寻优
for i=1:maxgeni;for j=1:sizepop%速度更新V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));V(j,find(V(j,:)>Vmax))=Vmax;V(j,find(V(j,:)<Vmin))=Vmin;%种群更新pop(j,:)=pop(j,:)+0.2*V(j,:);pop(j,find(pop(j,:)>popmax))=popmax;pop(j,find(pop(j,:)<popmin))=popmin;%自适应变异pos=unidrnd(opnum);if rand>0.95pop(j,pos)=5*rands(1,1);end%适应度值fitness(j)=PSO_BP_fun(pop(j,:),inputnum,hiddennum,outputnum,net,inputn,outputn);endfor j=1:sizepop%个体最优更新if fitness(j) < fitnessgbest(j)gbest(j,:) = pop(j,:);fitnessgbest(j) = fitness(j);end%群体最优更新 if fitness(j) < fitnesszbestzbest = pop(j,:);fitnesszbest = fitness(j);endendyy(i)=fitnesszbest;    end%% PSO结果分析
plot(yy)
title(['适应度曲线  ' '终止代数=' num2str(maxgen)]);
xlabel('进化代数');ylabel('适应度');x=zbest;%% 把最优初始阈值权值赋予网络预测
% %用PSO优化的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;%% PSO-BP网络训练
%网络进化参数
net.trainParam.epochs=120;
net.trainParam.lr=0.005;
net.trainParam.goal=4e-8;%网络训练
[net,per2]=train(net,inputn,outputn);%% PSO-BP网络预测
%数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
inputn_train=mapminmax('apply',input_train,inputps);
an=sim(net,inputn_test);
an1=sim(net,inputn_train);
test_PSOBP=mapminmax('reverse',an,outputps);
train_PSOBP=mapminmax('reverse',an1,outputps);%% PSO-BP误差
error_PSOBP=test_PSOBP-output_test;
disp('PSO-BP results:');
errorsum_PSOBP=sum(abs(error_PSOBP))figure(1);
plot(test_PSOBP,':og');
hold on
plot(output_test,'-*');
legend('Predictive output','Expected output','fontsize',10.8);
title('PSO-BP network output','fontsize',12);
xlabel("samples",'fontsize',12);figure(2);
plot(error_PSOBP,'-*');
title('PSO-BP Neural network prediction error');
xlabel("samples",'fontsize',12);figure(3);
plot(100*(output_test-test_PSOBP)./output_test,'-*');
title('PSO-BP Neural network prediction error percentage (%)');
xlabel("samples",'fontsize',12);figure(4);
plot(100*(output_train-train_PSOBP)./output_train,'-*');
title('PSO-BP Neural network training error percentage (%)');
xlabel("samples",'fontsize',12);toc

4.运行效果

hiddennum = 4:

输出:

PSO-BP results:errorsum_PSOBP =1.2443历时 109.578562 秒。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

hiddennum = 5:

输出:

PSO-BP results:errorsum_PSOBP =0.3804历时 303.508080 秒。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

http://www.yayakq.cn/news/36787/

相关文章:

  • 做网站卖资料广州网站建设模板
  • 如何对网站进行改版研发网站建设报价
  • 个人网站开发北京seo怎么优化
  • 拓者设计吧网站官网wordpress google authenticator
  • app开发全过程seo外链的常见措施
  • 网站开发的交付文档大数据培训机构可信吗
  • 刚做淘客没有网站佛山企业网站开发
  • 下载源码的网站如何把文件保存在wordpress
  • 如何查询网站备案时间温州建设小学网站首页
  • 小型教育网站开发与设计土建找工作去哪个网站
  • 北京网站建设龙鹏长沙哪家制作网站好
  • 宁波外贸网站设计公司注册公司网上核名网站
  • 做网站市场报价步登顶公司网站模板 网盘下载
  • 广东专业移动网站服务商深圳百度网站优化
  • 广州哪里有外贸网站嵌入式培训总结
  • 网站开发人员 把网站注销linux wordpress 空白
  • 秀米网站怎么做推文推广网站文案素材
  • 网站用什么软件seo排名优化网站开发职业访谈
  • 石家庄网站备案上海最好的网吧
  • 湖南长沙现在能去吗东莞网站建设优化东莞
  • 全国加盟网站建设网页版微信登录提示二维码已失效
  • 企业网站为什么都选千博企业网站韩国漫画漫免费观看免费
  • 公司网站上线的通知飞鱼crm系统官网
  • 需要上传视频的网站扬中网站哪家做的好
  • 网站设置在哪网站改域名
  • 25个经典网站源代码英语培训
  • 易风网站建设android开发培训
  • 淘宝网站怎么做视频平面设计线
  • 网站建设订单模板阿里巴巴网站的建设内容
  • 398做网站彩铃2022年最火的加盟店