前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工具函数

工具函数

作者头像
万木逢春
发布2018-04-18 10:39:46
5270
发布2018-04-18 10:39:46
举报
文章被收录于专栏:帮你学MatLab

工具函数

显示对比结果

clc

%% 不使用遗传算法

%% 使用随机权值和阈值

inputnum=size(P,1); % 输入层神经元个数

outputnum=size(T,1); % 输出层神经元个数

%% 新建BP网络

net=newff(minmax(P),[hiddennum,outputnum],{'tansig','logsig'},'trainlm');

%% 设置网络参数:训练次数为1000,训练目标为0.01,学习速率为0.1

net.trainParam.epochs=1000;

net.trainParam.goal=0.01;

LP.lr=0.1;

%% 训练网络以

net=train(net,P,T);

%% 测试网络

disp('1、使用随机权值和阈值 ')

disp('测试样本预测结果:')

Y1=sim(net,P_test);

err1=norm(Y1-T_test); %测试样本的仿真误差

err11=norm(sim(net,P)-T); %训练样本的仿真误差

disp(['测试样本的仿真误差:',num2str(err1)])

disp(['训练样本的仿真误差:',num2str(err11)])

%% 使用遗传算法

%% 使用优化后的权值和阈值

inputnum=size(P,1); % 输入层神经元个数

outputnum=size(T,1); % 输出层神经元个数

%% 新建BP网络

net=newff(minmax(P),[hiddennum,outputnum],{'tansig','logsig'},'trainlm');

%% 设置网络参数:训练次数为1000,训练目标为0.01,学习速率为0.1

net.trainParam.epochs=1000;

net.trainParam.goal=0.01;

LP.lr=0.1;

%% BP神经网络初始权值和阈值

w1num=inputnum*hiddennum; % 输入层到隐层的权值个数

w2num=outputnum*hiddennum;% 隐层到输出层的权值个数

w1=bestX(1:w1num); %初始输入层到隐层的权值

B1=bestX(w1num+1:w1num+hiddennum); %初始隐层阈值

w2=bestX(w1num+hiddennum+1:w1num+hiddennum+w2num); %初始隐层到输出层的阈值

B2=bestX(w1num+hiddennum+w2num+1:w1num+hiddennum+w2num+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}=reshape(B2,outputnum,1);

%% 训练网络以

net=train(net,P,T);

%% 测试网络

disp('2、使用优化后的权值和阈值')

disp('测试样本预测结果:')

Y2=sim(net,P_test);

err2=norm(Y2-T_test);

err21=norm(sim(net,P)-T);

disp(['测试样本的仿真误差:',num2str(err2)])

disp(['训练样本的仿真误差:',num2str(err21)])

function Obj=Objfun(X,P,T,hiddennum,P_test,T_test)

%% 用来分别求解种群中各个个体的目标值

%% 输入

% X:所有个体的初始权值和阈值

% P:训练样本输入

% T:训练样本输出

% hiddennum:隐含层神经元数

% P_test:测试样本输入

% T_test:测试样本期望输出

%% 输出

% Obj:所有个体的预测样本的预测误差的范数

[M,~]=size(X);

Obj=zeros(M,1);

for i=1:M

Obj(i)=Bpfun(X(i,:),P,T,hiddennum,P_test,T_test);

end

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帮你学MatLab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档