神经网络matlab工具箱有关参数设置

2023-11-16

1、常见参数

net.trainParam.epochs   最大训练次数

net.trainParam.goal  训练要求精度
net.trainParam.lr  学习速率
net.trainParam.show   显示训练迭代过程
net.trainParam.time  最大训练时间

 

一般用到的就是这些

 

2、更改相关的参数

也可以更改许多属性。这需要看书《神经网络模型及其matlab仿真程序设计》

3、工具箱中的有关问题

上图中,哪一个进度条到头了,就代表着根据这一项准则,神经网络的训练停止,如图就是因为连续6次验证检验均不能使其validation误差下降,则训练终止。

则各进度条上面的值均代表训练停止时的参数值。

各进度条右侧的值均代表停止的阈值。

左面的:???

 

3.1datadivision

 

默认为

B.D(1996)在他的经典专著Pattern Recognition and Neural Networks中给出了这三个词的定义。
Training set: A set of examples used for learning, which is to fit the parameters  of the classifier.
Validation set: A set of examples used to tune the parameters  of a classifier, for example to choose the number of hidden units in a neural network.
Test set: A set of examples used only to assess the performance  of a fully specified classifier.

显然,training set是用来训练模型或确定模型参数的,如ANN中权值等; validation set是用来做模型选择(model selection),即做模型的最终优化及确定的,如ANN的结构;而 test set则纯粹是为了测试已经训练好的模型的推广能力。当然,test set这并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。

1. The error rate estimate of the final model on validation data will be biased (smaller than the true error rate) since the validation set is used to select the final model.
2. After assessing the final model with the test set, YOU MUST NOT tune the model any further.

而神经网络最好选择的结果是validation set对应的误差最小的模型。

 

net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;

3.2training:对应训练方法

创建神经元时可以指定

net = feedforwardnet(50,'trainlm');%隐层有20个神经元

3.3performance

 

 

 

 

3.4validation checks:

数据被自动分成training set、validation set 及test set 三部分,training set是训练样本数据,validation set是验证样本数据,test set是测试样本数据,这样这三个数据集是没有重叠的。在训练时,用training训练,每训练一次,系统自动会将validation set中的样本数据输入神经网络进行验证,在validation set输入后会得出一个误差,而此前对validation set会设置一个步数,比如默认是6echo,则系统判断validation对应的误差是否在连续6次检验后不下降,如果不下降或者甚至上升,说明training set训练【应该是validation set对应的吧。。】的误差已经不再减小,没有更好的效果了,这时再训练就没必要了,就停止训练,不然可能陷入过学习。所以validation set有个设置步数,作用就在这里。根据matlab版本的不同,具体怎么分配样本也不一样,像R2009应该是自动分配的

validation checks 到达6之后,说明建的网络是能力不能提高了

 

net.trainParam.max_fail=100;                 % 最小确认失败次数 

 

 

 

 

 

3.3 mu

 

定义训练精度

trainlm函数使用的是Levenberg-Marquardt训练函数,Mu是算法里面的一个参数
% Each variable is adjusted according to Levenberg-Marquardt,
% jj = jX * jX
% je = jX * E
% dX = -(jj+I*mu) \ je

论坛上的回答是:
变量mu确定了学习是根据牛顿法还是梯度法来完成,下式为更新参数的L-M规则:
   
%      jj = jX * jX
%      je = jX * E
%      dX = -(jj+I*mu) \ je
随着mu的增大,LM的项jj可以忽略。因此学习过程主要根据梯度下降即mu/je项,只要迭代使误差增加,mu也就会增加,直到误差不再增加为止,但是,如果mu太大,则会使学习停止,当已经找到最小误差时,就会出现这种情况,这就是为什么当mu达到最大值时要停止学习的原因。 
**********
net.trainParam.mu       0.001  Initial Mu
net.trainParam.mu_dec     0.1  Mu decrease factor
net.trainParam.mu_inc      10  Mu increase factor
net.trainParam.mu_max    1e10  Maximum Mu

3.4performance

Performance就是程序中你指定的训练结束参数,这里是Mean Squared Error(均方误差),1.84e03是初始值,0.01是结束阈值,即程序里的goal

 

net.trainparam.goal = 0.01 ;%训练精度

 

3.4gradient

梯度

 

 

 

以上属性都可以设置

另外一个比较好的例子:https://zhidao.baidu.com/question/561438493672659524.html

4.net内部剖析:

net =

    Neural Network
 
              name: 'Feed-Forward Neural Network'
          userdata: (your custom info)
 
    dimensions:
 
         numInputs: 1
         numLayers: 2
        numOutputs: 1
    numInputDelays: 0
    numLayerDelays: 0
 numFeedbackDelays: 0
 numWeightElements: 20
        sampleTime: 1
 
    connections:
 
       biasConnect: [1; 1]
      inputConnect: [1; 0]
      layerConnect: [0 0; 1 0]
     outputConnect: [0 1]
 
    subobjects:
 
             input: Equivalent to inputs{1}
            output: Equivalent to outputs{2}
 
            inputs: {1x1 cell array of 1 input}
            layers: {2x1 cell array of 2 layers}
           outputs: {1x2 cell array of 1 output}
            biases: {2x1 cell array of 2 biases}
      inputWeights: {2x1 cell array of 1 weight}
      layerWeights: {2x2 cell array of 1 weight}
 
    functions:
 
          adaptFcn: 'adaptwb'
        adaptParam: (none)
          derivFcn: 'defaultderiv'
         divideFcn: 'dividerand'
       divideParam: .trainRatio, .valRatio, .testRatio
        divideMode: 'sample'
           initFcn: 'initlay'
        performFcn: 'mse'
      performParam: .regularization, .normalization
          plotFcns: {'plotperform', plottrainstate, ploterrhist,
                    plotregression}
        plotParams: {1x4 cell array of 4 params}
          trainFcn: 'trainlm'
        trainParam: .showWindow, .showCommandLine, .show, .epochs,
                    .time, .goal, .min_grad, .max_fail, .mu, .mu_dec,
                    .mu_inc, .mu_max, .lr
 
    weight and bias values:
 
                IW: {2x1 cell} containing 1 input weight matrix
                LW: {2x2 cell} containing 1 layer weight matrix
                 b: {2x1 cell} containing 2 bias vectors
 
    methods:
 
             adapt: Learn while in continuous use
         configure: Configure inputs & outputs
            gensim: Generate Simulink model
              init: Initialize weights & biases
           perform: Calculate performance
               sim : Evaluate network outputs given inputs
             train: Train network with examples
              view: View diagram
       unconfigure: Unconfigure inputs & outputs

 

 

 

通常情况下的程序:

 

%创建神经网络
net = feedforwardnet(50,'trainlm');%隐层有20个神经元
net.trainParam.epochs = 500;%训练的最大步数
net.trainparam.show = 50 ;%显示训练迭代过程
net.trainparam.goal = 0.01 ;%训练精度
net.trainParam.lr = 0.01 ;%学习速率
net.layers{1}.transferFCn='logsig'%设置隐藏层'logsig'
net.layers{2}.transferFCn='purelin'%设置输出层'logsig'
% Setup Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 80/100;
net.divideParam.valRatio = 20/100;
net.divideParam.testRatio = 0/100;

%训练神经网络模型。
[net,tr] = train(net,Xtrain',Ytrain');

%训练数据作为测试数据,计算其误差
y = net(Xtest');

 

有关链接:

http://blog.csdn.net/superdont/article/details/5506164

参数介绍:http://blog.csdn.net/h2008066215019910120/article/details/16805987

比较全:http://blog.sina.com.cn/s/blog_48ee23c80100rmkx.html

关于权值和阈值:http://muchong.com/html/200906/1359847.html

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

神经网络matlab工具箱有关参数设置 的相关文章

随机推荐

  • C++实现行列式的相关操作

    目录 一 前言 二 行列式运算操作集 1 概览 2 行列式的定义 3 行列式的输出与输入 4 行列式行与行 列与列的相加 5 行列式的行交换与列交换 6 行列式的行提取公因数与列提取公因数 7 行列式系数清零恢复 8 判断一个行列式是否是三
  • 无须SMTP服务器中转直接将电子邮件发送到对方邮箱

    前言 大家一定熟悉Foxmail中的 特快专递 它能直接将电子邮件发送到对方的邮件服务器中 而不需要经过SMTP服务器中转 这样做有什么好处 第一 发送速度比较快 不需要等SMTP服务器对邮件进行查毒 派发 验证 第二 你可以及时掌握邮件是
  • Spring(一)之控制反转和依赖注入

    1 sts下载 https spring io tools3 sts all 参考博客 https blog csdn net m0 37920381 article details 79972438 2 简介 spring是一个开源框架
  • JQuery针对select下拉框的各项操作

    JQuery针对select下拉框的各项操作 select id change function code 为Select添加事件 当选择其中一项时触发 var checkText select id find option selecte
  • union(联合)注入和布尔注入

    没有很快乐 也没有不快乐 好像不该这样 但也只能这样 成长也许如此 行于奔溃边缘又慢慢自愈吧 网易云热评 一 union联合注入 1 select 1 2 3会生成一张临时表 表中的字段为查询的字段 内容也是查询的字段 2 select 1
  • 什么是Chat GPT?我们能用它来干啥?

    Chat GPT是一款基于人工智能技术的自然语言处理模型 由OpenAI团队开发 它能够通过机器学习技术从海量文本数据中学习语言知识 实现自然语言生成 对话生成和语言理解等功能 使得机器能够更加智能地理解和使用自然语言 Chat GPT的应
  • C++中的异常处理(一)

    异常就是运行时出现的不正常 例如运行时耗尽了内存或遇到意外的非法输入 异常存在于程序的正常功能之外 并要求程序立即处理 不能不处理异常 异常是足够重要的 使程序不能继续正常执行的事件 如果找不到匹配的catch 程序就调用库函数termin
  • OnGUI一些方法使用

    在OnGUI中有很多基本的UI组件 接下来我来为大家介绍一下这些组件的用法与使用 首先是在OnGUI中的两种布局方法 第一种GUILayout BeginVertical 这个方法就是在编辑菜单打开面板的时候对面板的一个纵向的设置 然而又开
  • 深入探究Qt HTTP的内部构架

    一 前言 当今互联网时代中 B S Browser Server 浏览器 服务器 以及C S Client Server 客户端 服务器 架构已经是绝对的主流软件架构设计方式 除了极少部分的单机软件 它们各有优缺点 这里我们不展开讨论 但是
  • 华为云 DevCloud 部署云服务器

    本文基于已购买的华为云服务于使用华为云IAM子账号编写 一 云服务器 在华为云管理界面点击左上方打开服务列表 点击弹性云服务器ECS 进入云服务器管理列表 注意 如果提示没有权限需使用主账号开发云服务器权限与云硬盘权限 如下图 在服务器管理
  • 如何输入带有空格的string字符串

    利用 getline cin string include
  • C语言程序设计期末大作业(学生信息管理系统)(可自取源码)

    高校学生信息管理系统 一 在高校学生管理系统中包含九个主要操作 退出系统 学生信息的录入 学生信息的打印 学生信息的保存 学生信息的读取 学生人数的统计 学生信息的查找 学生信息的修改 学生信息的删除 二 设计流程 首先确认用switch
  • VR资源浏览网站

    https my matterport com 资源 https my matterport com show m kCeVCzCjQ5s
  • 关于TextView和ImageView的背景及透明设置小结

    关于TextView和ImageView的背景及透明设置小结 关于ImageView的相关设置 设置背景颜色 ImageView setBackgroundColor android graphics Color parseColor f3
  • MySQL中Char和VarChar的区别

    VarChar VARCHAR类型用于存储可变长字符串 是最常见的字符串数据类型 它比定长类型更节省空间 因为它仅使用必要的空间 例如 越短的字符串使用越少的空间 有一种情况例外 如果MySQL表使用ROW FORMAT FIXED创建的话
  • linux开机自动挂载配置文件/etc/fstab

    如果我们想实现开机自动挂载某设备 只要修改 etc fstab文件即可 文件挂载的配置文件 etc fstab 查看此文件可知 每行定义一个要挂载的文件系统 其每行的格式如下 要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频
  • Go []byte to a C *char

    https stackoverflow com questions 35673161 convert go byte to a c char ok b buf Bytes rc C the function unsafe Pointer b
  • c语言的标识符可分为哪3种字符,c语言标识符有哪三类?

    在计算机编程语言中 标识符是用户编程时使用的名字 用于给变量 常量 函数 语句块等命名 以建立起名称与使用之间的关系 标识符通常由字母和数字以及其它字符构成 c语言标识符的分类 C语言中标识符有三类 分别是 关键字 预定义标识符和用户标识符
  • MyBatis中resultMap解决映射关系(多对一、一对多)

    一 多对一映射处理 查询员工信息以及员工所对应的部门信息 public class Emp private Integer eid private String empName private Integer age private Str
  • 神经网络matlab工具箱有关参数设置

    1 常见参数 net trainParam epochs 最大训练次数 net trainParam goal 训练要求精度net trainParam lr 学习速率net trainParam show 显示训练迭代过程net trai