BP神经网络参数总结,BP神经训练窗口详解,基于BP神经网络的火灾识别,1000案例之17

news2024/11/24 7:36:48

目录

摘要
BP神经网络参数设置及各种函数选择
参数设置
训练函数
传递函数
学习函数
性能函数
显示函数
前向网络创建函数
BP神经网络训练窗口详解
训练窗口例样
训练窗口四部详解
基于B P神经网络的火灾识别
数据集
MATLAB编程BP神经网络代码,并附有GUI窗口
效果图

摘要

本文总结BP神经网络的参数设置,训练函数,传递函数,学习函数,画图函数,性能函数,创建函数,详解nntraintool训练窗口,以基于BP神经网络的火灾识别为例子,实现BP神经网络的编程

BP神经网络参数设置及各种函数选择

参数设置

1,最大迭代次数net.trainParam.epochs,一般先设置大,然后看训练收敛情况,如果提前收敛,最大迭代次数就改小,以到达训练目标为目的设置。
2,学习率net.trainParam.lr,一般设置0.01–0.5,数据越多,数据噪声越大,数据越难拟合,数值一般需要越小,设置太大,容易过早停止收敛。
3,学习目标net.trainParam.goal,根据训练测试的情况进行调整,过大容易过拟合,测试效果差,过小达不到想要的效果。

4,最大丢失次数net.trainParam.max_fail,既联系不收敛次数,达到这个次数后BP神经网络停止迭代,终止训练,主要目的是防止过拟合,太小容易过早停止迭代,太大容易过拟合,默认是6,需要依据训练测试情况和学习目标,妥协调整。
5,隐含层数,常见的是三个隐含层以内,再多也没有看到有明显的优势,数据好拟合,一个隐含层就足够,数据难拟合,更多层,收敛效果一般也没有明显改善。
6,隐含层神经元个数,按经验公式设置,试凑法调整。

训练函数

trainr 随机顺序递增更新训练函数

trainrp 带反弹的BP训练函数

trains 顺序递增BP训练函数

trainscg 量化连接梯度BP训练函数

trainbrBayes 规范化BP训练函数

trainc 循环顺序渐增训练函数

traincgb Powell-Beale连接梯度BP训练函数

traincgf Fletcher-Powell连接梯度BP训练函数

traincgp Polak-Ribiere连接梯度BP训练函数

traingda 自适应lrBP的梯度递减训练函数

traingdx 动量及自适应lrBP的梯度递减训练函数

trainlm Levenberg-Marquardt BP训练函数

trainoss 一步正切BP训练函数

传递函数:

logsig S型的对数函数

dlogsig logsig的导函数,有些MATALB版本不可用

tansig S型的正切函数

dtansig tansig的导函数,有些MATALB版本不可用

purelin 纯线性函数

dpurelin purelin的导函数,有些MATALB版本不可用

学习函数

learngdm 梯度下降栋梁学习函数

learngd 基于梯度下降法的学习函数

性能函数

mse 均方误差函数

msereg 均方误差规范化函数

显示函数

plotperf 绘制网络的性能

plotes 绘制一个单独神经元的误差曲面

plotep 绘制权值和阈值在误差曲面的位置

errsurf 计算单个神经元的误差曲面

前向网络创建函数

newffd 创建存在输入延迟的前向网络

newcf 创建级联前向网络

newff 创建前向BP网络

BP神经网络训练窗口详解

训练窗口例样

在这里插入图片描述

训练窗口详解

如根上图所示分为四个部分:   
1,Neural Network
    这里显示的是输入层神经元个数大小,中间层数量以及每层的神经元个数。

2,Algorithms
  Data Division:Random。这表示使用随机指数将目标分成三组,分别作为train,validation,test。
  Training:levenberg-Marquardt。这表示学习训练函数为trainlm。
  Performance:Mean Squared Error。这表示性能用均方误差来表示。
  Calculations: MEX。该网络保存为mex格式
3,Progress
  Epoch:该网络允许的迭代次数最大为500,实际迭代31次
  Time:运行时间。
  Performance:该网络的最大误差为1.96,目标误差为0.0001,实际误差为0.00475,可在Plots中的Performance中详细查看
  Gradient:该网络的最大梯度为1.83,阈值梯度为1e−7 1e^{-7}1e −7。
  Validation Checks:最大验证失败次数。(解释:比如默认是6,则系统判断这个验证集误差是否在连续6次检验后不下降,如果不下降或者甚至上升,说明training set训练的误差已经不再减小,没有更好的效果了,这时再训练就没必要了,就停止训练,不然可能陷入过拟合。)

4,Plots
  Performance:这里可以点进去,看train, validation和test的性能。
  在这里插入图片描述

Training State:记录Gradient和Validation Checks。
  在这里插入图片描述

Regression:通过绘制回归线来测量神经网络对应数据的拟合程度。
在这里插入图片描述
Plot Interval:训练窗口更新次数,等于10的时候,每迭代10次更新一次

基于B P神经网络的火灾识别

数据集

在这里插入图片描述

在这里插入图片描述

MATLAB编程BP神经网络代码,并附有GUI窗口

部位代码,如需要完整的,可以留言
clear all
% close allk
clc
global h_axes1;
% global h_axes2;
global edit2;
h_f=figure(‘name’,‘图像识别系统’,‘position’,[300,100,800,700]);
clf reset;
set(h_f, ‘defaultuicontrolfontsize’ ,12);
set(h_f, ‘defaultuicontrolfontname’ , ‘宋体’ );

h_axes1=axes(‘parent’,h_f,‘position’,[0.1 0.18 0.7 0.66],‘Unit’,‘normalized’,‘visible’,‘off’);
% h_axes2=axes(‘parent’,h_f,‘position’,[0.55 0.28 0.25 0.56],‘Unit’,‘normalized’,‘visible’,‘off’);

figcolor=get(h_f,‘color’);
edit2=uicontrol(h_f,‘style’,‘text’,‘position’,[1,620,200,40],‘backgroundcolor’,figcolor);
button_recg=uicontrol(h_f,‘style’,‘push’,‘string’,‘训练和测试’,‘position’,[20 50 150 50],‘callback’,‘train’);
button_open=uicontrol(h_f,‘style’,‘push’,‘string’,‘选择照片’,‘position’,[200 50 150 50],‘callback’,‘GUIopen’);
button_match
clc,clear
global edit2;
nclass=2;%图像类别数目
num_train=50;%选取每类50副图像训练

set(edit2,‘string’,‘加载训练数据…’)
drawnow
%load(‘traindata.mat’);
[train_data, test_data,realclass,num_test] = ReadColorData(nclass,num_train);

%构造训练目标集t
for y=1:nclass;
for m=1:num_train;
%构造训练集目标集
t(y,(y-1)num_train+m)=1;
end
end
mA=mean(train_data);
k=20;%降维至20维
[pcaface,V]=fastPCA(train_data,k,mA);
lowvec=min(pcaface);
upvec=max(pcaface);
scaledface = scaling( pcaface,lowvec,upvec);
pn = scaledface’;
%对测试集数据进行归一化处理
testface=test_data;
m=size(testface,1);
for i=1:m
testface(i,:)=testface(i,:)-mA;
end
pcatestface=testface
V;
scaledtestface = scaling( pcatestface,lowvec,upvec);
pnewn = scaledtestface’;
save(‘pca.mat’,‘upvec’, ‘lowvec’,‘mA’,‘V’);

set(edit2,‘string’,‘bp神经网络样本训练…’)
drawnow
net = createBP(pn,110,‘tansig’,‘purelin’,‘trainrp’,(1e-4),9000,0.005); %createBP
[net,tr] = trainBP(net,pn,t); %trainBP
save(‘net.mat’,‘net’,‘tr’);

set(edit2,‘string’,‘bp神经网络样本分类…’)
drawnow
accuracy= result(net,pnewn,pn,num_train,num_test);
set(edit2,‘string’,‘测试完成!’)
msgbox([‘识别准确率:’,num2str(accuracy*100),‘%。’])

%构建BP神经网络

%传入参数
%pn为归一化处理后的训练集 向量空间

%返回参数
%net 建立的BP神经网络

%函数声明
function[net] = createBP(pn,num_hidden,func_hidden,func_out,trainfunc,goal,epochs,learn_rate)

fprintf(‘开始构建BP神经网络\n\n’);

% %输入隐含层单元数,num_hidden储存该值的变量
% num_hidden = input(‘请输入隐含层神经元个数:(40:20:100)’);
%
% %输入输入层与隐含层之间的传递函数,func_hidden储存该字符串的变量
% func_hidden = input(‘请输入输入层与隐含层之间的传递函数:(tansig,purelin)’,‘s’);
%
% %输入隐含层与输出层之间的传递函数,func_out储存该字符串的变量
% func_out = input(‘请输入隐含层与输出层之间的传递函数:(tansig,purelin)’,‘s’);
%
% %输入BP训练函数,trainfunc储存该字符串的变量
% trainfunc = input(‘请输入BP网络训练函数:(trainrp)’,‘s’);
%
% %输入训练目标,goal储存该值的变量
% goal = input(‘请输入训练目标(<0.01)(1e-5):’);
%
% %输入训练次数,epochs储存该值的变量
% epochs = input(‘请输入训练次数:(8000)’);
%
% %输入学习速率,learn_rate储存该值的变量
% learn_rate = input(‘请输入学习速率(<0.1):(0.005)’);

fprintf(‘开始构建BP神经网络,请等待…\n\n’);
net = newff(minmax(pn),[num_hidden,2],{func_hidden,func_out},trainfunc); %调用MATLAB神经网络工具箱,构建BP神经网络
net.trainParam.goal=goal; %设置训练目标
net.trainParam.epochs=epochs; %训练迭代数
net.trainParam.lr = learn_rate; %设置学习速率
fprintf(‘BP神经网络搭建结束!\n\n’);

效果图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/365736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 实现 NFC 读取卡片信息

效果图&#xff1a;因为朋友需要个读取NFC卡片数据的功能,所以最近看了一下Android 系统下NFC 读取卡片信息的操作。NFC(近距离无线通信 ) 是一组近距离无线技术,通常只有在距离不超过 4 厘米时才能启动连接.借助 NFC&#xff0c;您可以在 NFC 标签与 Android 设备之间或者两台…

jenkins使用SSH拉取gitlab代码

jenkins机器上操作 1 创建密钥对 ssh-keygen (一路回车生成密钥对) ssh-copy-id -i id_rsa.pub xxx.xxx.xxx.xxx 2 查看公钥配置gitlab ssh cat /root/.ssh/id_rsa.pub 配置gitlab ssh 3 在jenkins配置私钥 cat /root/.ssh/id_rsa 完成以上操作后 在jenkins机器上执行git…

线程的执行

承接上文CPU原理简介程序的执行是由控制器发信号推动整个程序一步一步向前走&#xff0c;将数据存储在寄存器&#xff0c;从程序计数器中获取指令&#xff0c;比如先把3放到寄存器&#xff0c;再把5放到寄存器&#xff0c;再做一个加法&#xff0c;加法就是一个指令&#xff0c…

Redis官方可视化工具使用体验

前言 我们在使用redis不可避免的使用一些可视化工具&#xff0c;本文来介绍一下官方的可视化工具RedisInsight的使用体验 官方网址&#xff1a;https://docs.redis.com/latest/ri/ 傻瓜式下载安装&#xff0c;此处不作赘述 使用 安装完成后我们当然要先创建一个连接体验一…

九龙证券|全面注册制落地后IPO新增注册准备程序

历经科创板、北交所以及存量商场创业板试点注册制改革&#xff0c;资本商场总算迎来了全面注册制时代。 为确保全面注册制改革技能预备作业的顺利推进&#xff0c;近日&#xff0c;证监会拟定、发布了《监管规矩适用指引——发行类第8号&#xff1a;股票发行上市注册作业规程》…

KMP算法详细理解

一、目的1.KMP应用场景&#xff1a;可以解决字符串匹配问题&#xff1b; 在一个串中查找是否出现过另一个串。2.KMP的经典思想就是:当出现字符串不匹配时&#xff0c;可以记录一部分之前已经匹配的文本内容&#xff0c;利用这些信息避免从头再去做匹配。3.KMP算法关键在于&…

NTP同步时钟为医院提供标准的时间信号

NTP同步时钟应用于城市重要公共领域&#xff0c;如车站、学校、医院、等。NTP同步时钟可提供准确的公众时间&#xff0c;为人们的日常生活提供便利&#xff0c;避免了因时钟不准确而带来的不便。NTP同步时钟采用智能模块化设计&#xff0c;与同类产品相比&#xff0c;更突出了安…

LoRaWAN的网络协议是怎样的?有哪些应用?

LoRaWAN是一种低功耗广域物联网协议&#xff0c;其网络结构包括三个主要组件&#xff1a;终端设备&#xff08;End Device&#xff09;、网关&#xff08;Gateway&#xff09;和网络服务器&#xff08;Network Server&#xff09;。终端设备通常是一些低功耗设备&#xff0c;例…

LeetCode 206. 反转链表

LeetCode 206. 反转链表 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 给你单链表的头节点 headheadhead &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&a…

51. N 皇后 (Swift 版本)

题目 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。 …

2023年Java进阶架构师的必备思维导图,让你少走弯路!

架构师是什么&#xff1f;要做什么&#xff1f; 架构师 &#xff1a;是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。架构师不是一个人&#xff0c;他需要建立高效的体系&#xff0c;带领团队去攻城略地&#xff0c;在规定的时间内…

nodejs基于vue社区失物招领+房屋租赁+停车+宠物互助平台

1、一般用户的功能及权限 所谓一般用户就是指还没有注册的过客,他们可以浏览主页面上的信息。但如果有中意的社区互助信息时&#xff0c;要登录注册&#xff0c;只有注册成功才有的权限。 2、管理员的功能及权限 用户信息的添加和管理&#xff0c;社区互助详细信息添加和管理和…

【机器学习】生成式模型和判别式模型

在机器学习中&#xff0c;对于有监督学习可以将其分为两类模型&#xff1a;判别式模型和生成式模型。判别式模型是针对条件分布建模&#xff0c;而生成式模型则针对联合分布进行建模。 1.抛砖引玉 假设有训练数据(X,Y)&#xff0c;X是属性集合&#xff0c;Y是类别标记。这时来了…

【十】深入理解redolog,undolog和binlog的底层原理

MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…

Java进击框架:Spring(一)

Java进击框架&#xff1a;Spring&#xff08;一&#xff09;前言创建Spring项目Spring IoC容器和Beans介绍Bean的概述Spring IoC配置元数据实例化Bean依赖注入循环依赖详细配置生命周期回调Bean定义继承基于注解的容器配置Component和进一步的原型注解自动检测类和注册Bean定义…

Qt 第1课、Qt 的窗口组件和窗口类型

GUI 程序的开发原理&#xff1a; GUI 程序在运行的时候&#xff0c;操作系统会为它创造一个消息队列&#xff0c;消息队列用于存储操作系统发过来的系统消息。 用户使用操作系统的过程中&#xff0c;操作系统内核检测到用户的操作&#xff08;鼠标&#xff0c;键盘&#xff09…

[数据结构]时间复杂度与空间复杂度

[数据结构]时间复杂度与空间复杂度 如何衡量一个算法的好坏 long long Fib(int N) {if(N < 3)return 1;return Fib(N-1) Fib(N-2); } 这是一个求斐波那契数列的函数&#xff0c;使用递归的方法求得&#xff0c;虽然代码看起来很简洁&#xff0c;但是简洁真的就好吗&#…

Apache Hadoop生态部署-zookeeper单机安装

目录 查看服务架构图-服务分布、版本信息 一&#xff1a;安装前准备 1&#xff1a;zookeeper安装包选择--官网下载 2&#xff1a;zookeeper3.5.7安装包--百度网盘 二&#xff1a;安装与常用配置 2.1&#xff1a;下载解压zk安装包 2.2&#xff1a;配置修改 2.3&#xff1…

Codeforces Round #848 (Div. 2)(A~D)

A. Flip Flop Sum给出一个只有1和-1的数组&#xff0c;修改一对相邻的数&#xff0c;将它们变为对应的相反数&#xff0c;修改完后数组的和最大是多少。思路&#xff1a;最优的情况是修改一对-1&#xff0c;其次是一个1一个-1&#xff0c;否则修改两个1。AC Code&#xff1a;#i…

订单超时自动取消的 3 种解决方案,yyds!

大家对电商购物应该都比较熟悉了&#xff0c;我们应该注意到&#xff0c;在下单之后&#xff0c;通常会有一个倒计时&#xff0c;如果超过支付时间&#xff0c;订单就会被自动取消。下单今天&#xff0c;我们来聊聊订单超时未支付自动取消的几种方案。1.定时任务这是最容易想到…