利用手算、串行训练方式下的BP神经网络,其误差学习曲线不能呈现收敛吗?

[% script: main_seral.m

% 串行方式训练BP网络,实现性别识别

%% 清理

clear all

clc

%% 读入数据

xlsfile='student.xls';

[data,label]=getdata(xlsfile);

%% 划分数据

[traind,trainl,testd,testl]=divide(data,label);

%% 设置参数

rng('default')

rng(0)

nTrainNum = 60; % 60个训练样本

nSampDim = 2;   % 样本是2维的

M=2000;         % 迭代次数

ita=0.1;        % 学习率

alpha=0.2;

%% 构造网络

HN=3;           % 隐含层层数

net.w1=rand(3,HN);

net.w2=rand(HN+1,1);

%% 归一化数据

mm=mean(traind);

for i=1:2

traind_s(:,i)=traind(:,i)-mm(i);

end

ml(1) = std(traind_s(:,1));

ml(2) = std(traind_s(:,2));

for i=1:2

traind_s(:,i)=traind_s(:,i)/ml(i);

end

%% 训练

for x=1:M                          % 迭代

ind=randi(60);                 % 从1-60中选一个随机数

in=[traind_s(ind,:),1];        % 输入层输出

net1_in=in*net.w1;             % 隐含层输入

net1_out=logsig(net1_in);      % 隐含层输出

net2_int = [net1_out,1];       % 下一次输入

net2_in = net2_int*net.w2;     % 输出层输入

net2_out = logsig(net2_in);    % 输出层输出

err=trainl(ind)-net2_out;      % 误差

errt(x)=1/2*sqrt(sum(err.^2)); % 误差平方

fprintf('第 %d 次循环, 第%d个学生, 误差  %f\n',x,ind, errt(x));

% 调整权值

for i=1:length(net1_out)+1

for j=1:1

ipu1(j)=err(j);     % 局部梯度

% 输出层与隐含层之间的调整量

delta1(i,j) = ita.*ipu1(j).*net2_int(i);

end

end

for m=1:3

for i=1:length(net1_out)

% 局部梯度

ipu2(i)=net1_out(i).*(1-net1_out(i)).*sum(ipu1.*net.w2);

% 输入层和隐含层之间的调整量

delta2(m,i)= ita.*in(m).*ipu2(i);

end

end

% 调整权值

if x==1

net.w1 = net.w1+delta2;

net.w2 = net.w2+delta1;

else

net.w1 = net.w1+delta2*(1-alpha) + alpha*old_delta2;

net.w2 = net.w2+delta1*(1-alpha) + alpha*old_delta1;

end

old_delta1=delta1;

old_delta2=delta2;

end

%% 测试

% 测试数据归一化

for i=1:2

testd_s(:,i)=testd(:,i)-mm(i);

end

for i=1:2

testd_s(:,i)=testd_s(:,i)/ml(i);

end

testd_s = [testd_s,ones(length(testd_s),1)];

net1_in=testd_s*net.w1;

net1_out=logsig(net1_in);

net1_out=[net1_out,ones(length(net1_out),1)];

net2_int = net1_out;

net2_in = net2_int*net.w2;

net2_out=net2_in;

% 取整

net2_out(net2_out<0.5)=0;

net2_out(net2_out>=0.5)=1;

rate=sum(net2_out==testl')/length(net2_out);

%% 显示

fprintf('  正确率:\n    %f %%\n', rate*100);

figure(1);

plot(1:M,errt,'b-','LineWidth',1.5);

xlabel('迭代次数')

ylabel('误差')

title('BP网络串行训练的误差')

% axis([0,200,0,0.45])]

BP_seral.jpg

(59.39 KB, 下载次数: 1)

2016-5-5 15:34 上传

2016-5-5 15:40 上传

点击文件名下载附件

882 Bytes, 下载次数: 11

被调函数

2016-5-5 15:41 上传

点击文件名下载附件

383 Bytes, 下载次数: 13

被调函数

2016-5-5 15:41 上传

点击文件名下载附件

31 KB, 下载次数: 11

数据

2016-5-5 15:41 上传

点击文件名下载附件

2.66 KB, 下载次数: 12

主程序

matlab 曲线收敛,BP神经网络学习曲线收敛问题相关推荐

  1. MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试

    文章目录 MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试 一.题目要求 二.完整的目录结构说明 三.Mnist数据集及数据格式转换 四.BP神经网络相关知识 4.1 ...

  2. 基于Matlab平台的BP神经网络进行数据拟合

    基于Matlab平台的BP神经网络进行数据拟合 上次讨论了基于Hopfield神经网络的数字识别,BP(Back Propagation)神经网络也可以进行相关的数字识别如手写数字识别等,由于BP神经 ...

  3. matlab流量预测模型,基于MATLAB工具箱的BP神经网络年径流量预测模型研究——以塔城地区乌拉斯台河为例...

    水 文 JOURNAL OF CHINA HYDROLOGY 第28卷第1期 2008年2月 Vol.28 No.1 Feb., 2008 塔城地区位于新疆维吾尔自治区西北边陲, 地处中纬, 虽属内陆 ...

  4. bp神经网络matlab设计实例,bp神经网络matlab实例(bp神经网络matlab实例).doc

    bp神经网络matlab实例(bp神经网络matlab实例).doc bp神经网络matlab实例(bp神经网络matlab实例)Case 1 training BP network by momen ...

  5. 用matlab实现用Bp神经网络对iris数据集进行分类(以及影响分类性能的参数条件)

    数据集已上传,结尾链接下载即可!!! 一.实验内容 Iris鸢尾花卉数据集,是一类多重变量分析的数据集.数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性,分别对应花萼长度,花 ...

  6. matlab水果定位与分割,利用Matlab软件和BP神经网络快速识别水果实现分拣

    我国是水果生产与消费大国,我国水果不但品种丰富,而且以水果为原料的食品如罐头.果冻等加工产业也颇具规模.然而,在水果果料的加工过程中可能会不经意地混入诸如毛发.纤维丝.纸屑.金属.油漆等异物,从而对产 ...

  7. 利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱)

    最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型.时间序列模型,GM(1,1)模型,可是自己在结合实际的工作内容,发现这几种模型预测的精度不是很高,于 ...

  8. Matlab 遗传算法优化BP神经网络

    最近在学遗传算法优化BP神经网络,从新浪博客,Matlab中文论坛以及<MATLAB 神经网络43个案例分析>里看了许多资料, 存在着缺少test函数,以及函数名调用错误等问题.自编了te ...

  9. 基于Matlab的多层BP神经网络在非线性函数拟合中的应用

    本图文详细介绍了如何利用Matlab神经网络工具箱实现多层BP神经网络对非线性函数的拟合.

  10. bp神经网络matlab实例蚊子,bp神经网络matlab实例

    bp神经网络matlab实例 采用 Matlab 工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考 Matlab 帮助文档.实例一% 例 1 采用动量梯度下降算法训练 BP 网 ...

最新文章

  1. ArcEngine的ToolbarControl解析
  2. 图灵奖得主Hopcroft对话智源理事长张宏江:人工智能战略、研究和教育
  3. arduinoesp8266定时器_esp8266定时开关,远程控制
  4. vray学习笔记(3)-多维子材质是个什么东西
  5. SVN中的trunk branches tags
  6. mysql根据时间回退_MySQL 中的日期时间类型
  7. 关于文件路径的斜杠和反斜杠问题
  8. urlconnection.connect()和url.openconnection()的区别
  9. html调整图片之间的距离,html中如何调整图片之间的间距
  10. java表格选中事件_表格中删除选中的操作
  11. 电厂计算机监控系统的结构及功能,水电厂计算机监控系统
  12. gradle命令中api和implement的区别
  13. 无监督降维 效果评价 trustworthiness measure
  14. Visual Studio+opencv报错合集
  15. sit是什么环境_测试环境是什么_搭建测试环境要遵循什么原则?
  16. 【MyBatis】mybatis分页插件
  17. YCM错误:“The ycmd server SHUT DOWN (restart with :YcmRestartServer)“
  18. 最新App、手机网站尺寸规范—移动设备界面UI设计尺寸规范
  19. python元组转字符串_python3字符串和字典、集合、元组的相互转换 | 吴老二
  20. 【Android】共享元素 share elements TextView颜色大小动画过度

热门文章

  1. Tomcat做成系统服务
  2. CSDN博客编写快捷键
  3. android知乎多图片选择,知乎开源Matisse图片选择器使用
  4. 如何在命令行下用命令slmgr激活windows8系统
  5. 洛谷P4158 [SCOI2009]粉刷匠 题解
  6. golang简易版聊天室
  7. sklearn逻辑回归参数详解,及用逻辑回归制作评分卡
  8. 提交您的博客到各大网站
  9. POJ1200 Crazy Search
  10. Eclipse下载与安装教程 2020