工具函数

工具函数

显示对比结果

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

原文发布于微信公众号 - 帮你学MatLab(MatLab_helper)

原文发表时间:2016-04-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

吴恩达机器学习笔记 —— 10 神经网络参数的反向传播算法

神经网络可以理解为两个过程:信号的正向传播和误差的反向传播。在正向的传播过程中,计算方法为Sj=wijxi+bj,其中i是样本、j是层数。然后xj=f(Sj),...

10600
来自专栏ml

对sppnet网络的理解

 前言:    接着上一篇文章提到的RCNN网络物体检测,这个网络成功的引入了CNN卷积网络来进行特征提取,但是存在一个问题,就是对需要进行特征提取图片大小有严...

37960
来自专栏ml

对sppnet网络的理解

   接着上一篇文章提到的RCNN网络物体检测,这个网络成功的引入了CNN卷积网络来进行特征提取,但是存在一个问题,就是对需要进行特征提取图片大小有严格的限制。...

16230
来自专栏杂七杂八

matlab留出法实现

留出法(hold-out) 方法:直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即.在S上训练出模型后,用T来评估其作为测...

72390
来自专栏Deep learning进阶路

深度学习论文笔记(七)---Deconvolution network-2016年(Learning Deconvolution Network for Semantic Segmentation )

深度学习论文笔记(七)---Deconvolution network Learning Deconvolution Network for Semantic...

1.8K00
来自专栏量化投资与机器学习

深度学习Matlab工具箱代码注释之cnntrain.m

%%========================================================================= %...

22380
来自专栏算法修养

文本分类学习 (八)SVM 入门之线性分类器

SVM 和线性分类器是分不开的。因为SVM的核心:高维空间中,在线性可分(如果线性不可分那么就使用核函数转换为更高维从而变的线性可分)的数据集中寻找一个最优的超...

6710
来自专栏AI深度学习求索

AI科技:如何利用图片像素之间的像素度进行图像分割?

论文:Learning Pixel-level Semantic Affinity with Image-level Supervision for Weakl...

15320
来自专栏AI研习社

前Twitter资深工程师详解YOLO 2与YOLO 9000目标检测系统

AI研习社按:YOLO是Joseph Redmon和Ali Farhadi等人于2015年提出的第一个基于单个神经网络的目标检测系统。在今年CVPR上,Jose...

56960
来自专栏ml

对sppnet网络的理解

   接着上一篇文章提到的RCNN网络物体检测,这个网络成功的引入了CNN卷积网络来进行特征提取,但是存在一个问题,就是对需要进行特征提取图片大小有严格的限制。...

13920

扫码关注云+社区

领取腾讯云代金券