matlab 曲线收敛,BP神经网络学习曲线收敛问题
利用手算、串行训练方式下的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神经网络学习曲线收敛问题相关推荐
- MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试
文章目录 MATLAB实现基于BP神经网络的手写数字识别+GUI界面+mnist数据集测试 一.题目要求 二.完整的目录结构说明 三.Mnist数据集及数据格式转换 四.BP神经网络相关知识 4.1 ...
- 基于Matlab平台的BP神经网络进行数据拟合
基于Matlab平台的BP神经网络进行数据拟合 上次讨论了基于Hopfield神经网络的数字识别,BP(Back Propagation)神经网络也可以进行相关的数字识别如手写数字识别等,由于BP神经 ...
- matlab流量预测模型,基于MATLAB工具箱的BP神经网络年径流量预测模型研究——以塔城地区乌拉斯台河为例...
水 文 JOURNAL OF CHINA HYDROLOGY 第28卷第1期 2008年2月 Vol.28 No.1 Feb., 2008 塔城地区位于新疆维吾尔自治区西北边陲, 地处中纬, 虽属内陆 ...
- bp神经网络matlab设计实例,bp神经网络matlab实例(bp神经网络matlab实例).doc
bp神经网络matlab实例(bp神经网络matlab实例).doc bp神经网络matlab实例(bp神经网络matlab实例)Case 1 training BP network by momen ...
- 用matlab实现用Bp神经网络对iris数据集进行分类(以及影响分类性能的参数条件)
数据集已上传,结尾链接下载即可!!! 一.实验内容 Iris鸢尾花卉数据集,是一类多重变量分析的数据集.数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性,分别对应花萼长度,花 ...
- matlab水果定位与分割,利用Matlab软件和BP神经网络快速识别水果实现分拣
我国是水果生产与消费大国,我国水果不但品种丰富,而且以水果为原料的食品如罐头.果冻等加工产业也颇具规模.然而,在水果果料的加工过程中可能会不经意地混入诸如毛发.纤维丝.纸屑.金属.油漆等异物,从而对产 ...
- 利用MATLAB 2016a进行BP神经网络的预测(含有神经网络工具箱)
最近一段时间在研究如何利用预测其销量个数,在网上搜索了一下,发现了很多模型来预测,比如利用回归模型.时间序列模型,GM(1,1)模型,可是自己在结合实际的工作内容,发现这几种模型预测的精度不是很高,于 ...
- Matlab 遗传算法优化BP神经网络
最近在学遗传算法优化BP神经网络,从新浪博客,Matlab中文论坛以及<MATLAB 神经网络43个案例分析>里看了许多资料, 存在着缺少test函数,以及函数名调用错误等问题.自编了te ...
- 基于Matlab的多层BP神经网络在非线性函数拟合中的应用
本图文详细介绍了如何利用Matlab神经网络工具箱实现多层BP神经网络对非线性函数的拟合.
- bp神经网络matlab实例蚊子,bp神经网络matlab实例
bp神经网络matlab实例 采用 Matlab 工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考 Matlab 帮助文档.实例一% 例 1 采用动量梯度下降算法训练 BP 网 ...
最新文章
- ArcEngine的ToolbarControl解析
- 图灵奖得主Hopcroft对话智源理事长张宏江:人工智能战略、研究和教育
- arduinoesp8266定时器_esp8266定时开关,远程控制
- vray学习笔记(3)-多维子材质是个什么东西
- SVN中的trunk branches tags
- mysql根据时间回退_MySQL 中的日期时间类型
- 关于文件路径的斜杠和反斜杠问题
- urlconnection.connect()和url.openconnection()的区别
- html调整图片之间的距离,html中如何调整图片之间的间距
- java表格选中事件_表格中删除选中的操作
- 电厂计算机监控系统的结构及功能,水电厂计算机监控系统
- gradle命令中api和implement的区别
- 无监督降维 效果评价 trustworthiness measure
- Visual Studio+opencv报错合集
- sit是什么环境_测试环境是什么_搭建测试环境要遵循什么原则?
- 【MyBatis】mybatis分页插件
- YCM错误:“The ycmd server SHUT DOWN (restart with :YcmRestartServer)“
- 最新App、手机网站尺寸规范—移动设备界面UI设计尺寸规范
- python元组转字符串_python3字符串和字典、集合、元组的相互转换 | 吴老二
- 【Android】共享元素 share elements TextView颜色大小动画过度