matlab 中“newff”
函数的使用方法技巧|和各参数的意义



先来一个简单的源程序让大家练习一下:

% Here input P and targets T define a simple function
which 

% we can plot: 



p = [0 1 2 3 4 5 6 7 8]; 

t = [0 0.84 0.91 0.14 -0.77 -0.96 -0.28 0.66
0.99]; 

plot(p,t,'o') 



net = newff([0 8],[10 1],{'tansig'
'purelin'},'trainlm'); 

y1 = sim(net,p) 

plot(p,t,'o',p,y1,'x') 



Here the network is trained for up to 50 epochs to a error goal
of 

0.01, and then resimulated. 



net.trainParam.epochs = 50; 

net.trainParam.goal = 0.01; 

net = train(net,p,t); 

y2 = sim(net,p) 

plot(p,t,'o',p,y1,'x',p,y2,'*') 



设[P,T]是训练样本,[X,Y]是测试样本;

net=newrb(P,T,err_goal,spread); %建立网络

q=sim(net,p);

e=q-T;

plot(p,q); %画训练误差曲线

q=sim(net,X);

e=q-Y;

plot(X,q); %画测试误差曲线



训练前馈网络的第一步是建立网络对象。函数newff建立一个可训练的前馈网络。这需要4个输入参数。

第一个参数是一个Rx2的矩阵以定义R个输入向量的最小值和最大值。

第二个参数是一个设定每层神经元个数的数组。

第三个参数是包含每层用到的传递函数名称的细胞数组。

最后一个参数是用到的训练函数的名称。

举个例子,下面命令将创建一个二层网络。它的输入是两个元素的向量,第一层有三个神经元(3),第二层有一个神经元(1)。

第一层的传递函数是tan-sigmoid,输出层的传递函数是linear。

输入向量的第一个元素的范围是-1到2[-1 2],输入向量的第二个元素的范围是0到5[0
5],训练函数是traingd。



  net=newff([-1 2; 0
5],[3,1],{'tansig','purelin'},'traingd');



    
  这个命令建立了网络对象并且初始化了网络权重和偏置,因此网络就可以进行训练了。

我们可能要多次重新初始化权重或者进行自定义的初始化。

下面就是初始化的详细步骤。

  在训练前馈网络之前,权重和偏置必须被初始化。初始化权重和偏置的工作用命令init来实现。这个函数接收网络对象并初始化权重和偏置后返回网络对象。

下面就是网络如何初始化的:



  net = init(net);



  我们可以通过设定网络参数net.initFcn和net.layer{i}.initFcn这一技巧来初始化一个给定的网络。

net.initFcn用来决定整个网络的初始化函数。前馈网络的缺省值为initlay,它允许每一层用单独的初始化函数。

设定了net.initFcn ,那么参数net.layer{i}.initFcn
也要设定用来决定每一层的初始化函数。

  对前馈网络来说,有两种不同的初始化方式经常被用到:initwb和initnw。initwb函数根据每一层自己的初始化参数(net.inputWeights{i,j}.initFcn)初始化权重矩阵和偏置。前馈网络的初始化权重通常设为rands,它使权重在-1到1之间随机取值。这种方式经常用在转换函数是线性函数时。initnw通常用于转换函数是曲线函数。它根据Nguyen和Widrow[NgWi90]为层产生初始权重和偏置值,使得每层神经元的活动区域能大致平坦的分布在输入空间。

它比起单纯的给权重和偏置随机赋值有以下优点:

(1)减少神经元的浪费(因为所有神经元的活动区域都在输入空间内)。

(2)有更快的训练速度(因为输入空间的每个区域都在活动的神经元范围中)。

  初始化函数被newff所调用。因此当网络创建时,它根据缺省的参数自动初始化。init不需要单独的调用。可是我们可能要重新初始化权重和偏置或者进行自定义的初始化。例如,我们用newff创建的网络,它缺省用initnw来初始化第一层。如果我们想要用rands重新初始化第一层的权重和偏置,我们用以下命令:

  net.layers{1}.initFcn = 'initwb';

  net.inputWeights{1,1}.initFcn = 'rands';

  net.biases{1,1}.initFcn = 'rands';

  net.biases{2,1}.initFcn = 'rands';

  net = init(net);



IW: 输入层到隐含层的权重矩阵

LW: 隐含层和输出层间的权重矩阵

b: 阀值向量



如网络为net, 输入层和输出均为一个接点情况下,则用

net.IW{1,1}可以看到第一个输入接点到第一隐含层的权重向量;

net.LW{2,1}可以看到隐含层到输出层的权值向量;

net.b{1,1}是隐含层的阀值向量,

net.b{2,1}是输出接点的阀值;



在多输入输出下先用

net.IW

net.LW

net.b

查看各矩阵结构,再相应用net.IW{?,?}等语句查到相关的向量

matlab 中“newff” 函数的参数设置的更多相关文章

  1. Matlab中 awgn 函数输入参数带有‘measured’ 时snr的含义

    MATLAB中awgn 函数可以为输入信号x 添加一定大小的噪声. out = awgn(in,snr,'measured');  是一种常见的使用方法,意思是在添加噪声前先测量一下输入信号的功率,再 ...

  2. matlab中nargin函数输入参数数目

    来源:https://ww2.mathworks.cn/help/matlab/ref/nargin.html?searchHighlight=nargin&s_tid=doc_srchtit ...

  3. matlab中subplot函数的功能

    转载自http://wenku.baidu.com/link?url=UkbSbQd3cxpT7sFrDw7_BO8zJDCUvPKrmsrbITk-7n7fP8g0Vhvq3QTC0DrwwrXfa ...

  4. 【原创】Matlab中plot函数全功能解析

    [原创]Matlab中plot函数全功能解析 该帖由Matlab技术论(http://www.matlabsky.com)坛原创,更多精彩内容参见http://www.matlabsky.com 功能 ...

  5. Matlab中plot函数全功能解析

    Matlab中plot函数全功能解析 功能 二维曲线绘图 语法 plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(...,'PropertyName ...

  6. Matlab中imfilter()函数的用法

    Matlab中imfilter()函数的用法 功能:对任意类型数组或多维图像进行滤波.用法:B = imfilter(A,H) B = imfilter(A,H,option1,option2,... ...

  7. matlab中patch函数的用法

    http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...

  8. 【matlab】设定函数默认参数

    C++/java/python系列的语言,函数可以有默认值,通常类似如下的形式: funtion_name (param1, param2=default_value, ...) 到了matlab下发 ...

  9. Direcshow中视频捕捉和参数设置报告

    Direcshow中视频捕捉和参数设置报告 1.      关于视频捕捉(About Video Capture in Dshow) 1视频捕捉Graph的构建 一个能够捕捉音频或者视频的graph图 ...

随机推荐

  1. ES6问题记录--Promise

    在读[阮一峰]的 ES6 入门文档的时候,有一段代码是这样的. 文章中,还有一段是这样写的 所以,Promise.resolve(3).finally(()=>{}),解析出来的resolve ...

  2. C#多线程函数如何传参数和返回值

          详见网站:http://WWW.MOVIH.COM就是一个多线程爬虫系统.   C#多线程函数如何传参数和返回值 提起多线程,不得不提起 委托(delegates)这个概念. 我理解的委托 ...

  3. hdu3068 最长回文 马拉车模板题

    题目传送门 马拉车算法模板题. 学习博客 #include<bits/stdc++.h> #define clr(a,b) memset(a,b,sizeof(a)) using name ...

  4. #537 (Div. 2) Creative Snap (思维+dfs)

    https://codeforces.com/contest/1111/problem/C 横坐标1..2^n对应着2^n个复仇者的基地,上面有k个复仇者(位置依次给出).你是灭霸你要用以下方法消灭这 ...

  5. [微信小程序] -- wxss引用外部css文件及iconfont

    小程序引入外部文件的方式是: 只需要在其css文件写上: @import "外部css地址.wxss"; 因为项目需要, 小程序中需要使用iconfont , 很容易就想到了H5的 ...

  6. CentOS7下php安装mcrypt扩展

    https://blog.csdn.net/skykingf/article/details/40185405 以下步骤均为本人实际操作,可能与你的安装方法有所区别,但我会尽量排除疑惑) 大致步骤(1 ...

  7. ecshop 模板机制

    ECShop模板是基于smarty 文件名cls_template.php lib_main.php中的assign_template()会设置我们的网店的公共信息及网站设置:assign_dynam ...

  8. 后台返回的值ajax接收不到

    原因有很多种可能,我遇到的是后台写的Controller忘记了加@ResponseBody,导致springMVC把返回的字符串当成view了

  9. 2.3 if switch for等流程控制

    if条件中可以写多个语句,语句的作用域仅限于if,不可在if之外的地方使用 package main import ( "fmt" "io/ioutil" ) ...

  10. [转]NetCat简介

    NetCat是一个非常简单的Unix工具,可以读.写TCP或UDP网络连接(network connection).它被设计成一个可靠的后端(back-end) 工具,能被其它的程序或脚本直接地或容易 ...