MATLAB神经网络工具箱的部分函数
神经网络工具箱常用函墙绅褡孛数列表
1)重要的感知器神经网络函数:
初始化:足毂忍珩initp
训练:trainp
仿真:simup
学习规则:learnp
2)线性神经网络函数:
初始化:initlin
设计:solvelin
仿真:simulin
离线训练:trainwh
在线自适应训练:adaptwh
学习规则:learnwh
3)BP网络函数:
Initff:初始化不超过3层的前向网络;
Simuff:仿真不超过3层的前向网络;
Trainbp,trainbpx,trainlm:训练BP(Trainbp:最慢;trainbpx:次之;trainlm:速度最快,但需要更多的存储空间。)
Learnbp:学习规则
4)自组织网络
初始化:initsm
仿真:simuc
训练:trainc:利用竞争规则训练
trainsm:利用Kohonen规则训练
5)反馈网络(Hopfield网络)
仿真:simuhop
设计:solvehop
solvehop设计Hopfield网络
solvelin设计线性网络
rands产生对称随机数
learnbp反向传播学习规则
learnhHebb学习规则
learnp感知层学习规则
learnwhWidrow-Hoff学习规则
initlin线性层初始化
initp感知层初始化
initsm自组织映射初始化
plotsm绘制自组织映射图
trainbp利用反向传播训练前向网络
trainp利用感知规则训练感知层
trainwh利用Widrow-Hoff规则训练线性层
trainsm利用Kohonen规则训练自组织映射
说明:本文档中所列出的函数适用于MATLAB5.3以上版本,为了简明起见,只列出了函数名,若需要进一步的说明,请参阅MATLAB的帮助文档。1. 网络创建函数newp 创建感知器网络newlind 设计一线性层newlin 创建一线性层newff 创建一前馈BP网络newcf 创建一多层前馈BP网络newfftd 创建一前馈输入延迟BP网络newrb 设计一径向基网络newrbe 设计一严格的径向基网络newgrnn 设计一广义回归神经网络newpnn 设计一概率神经网络newc 创建一竞争层newsom 创建一自组织特征映射newhop 创建一Hopfield递归网络newelm 创建一Elman递归网络2. 网络应用函数sim 仿真一个神经网络init 初始化一个神经网络adapt 神经网络的自适应化train 训练一个神经网络3. 权函数dotprod 权函数的点积ddotprod 权函数点积的导数dist Euclidean距离权函数normprod 规范点积权函数negdist Negative距离权函数mandist Manhattan距离权函数linkdist Link距离权函数4. 网络输入函数netsum 网络输入函数的求和dnetsum 网络输入函数求和的导数5. 传递函数hardlim 硬限幅传递函数hardlims 对称硬限幅传递函数purelin 线性传递函数tansig 正切S型传递函数logsig 对数S型传递函数dpurelin 线性传递函数的导数dtansig 正切S型传递函数的导数dlogsig 对数S型传递函数的导数compet 竞争传递函数radbas 径向基传递函数satlins 对称饱和线性传递函数6. 初始化函数initlay 层与层之间的网络初始化函数initwb 阈值与权值的初始化函数initzero 零权/阈值的初始化函数initnw Nguyen_Widrow层的初始化函数initcon Conscience阈值的初始化函数midpoint 中点权值初始化函数7. 性能分析函数mae 均值绝对误差性能分析函数mse 均方差性能分析函数msereg 均方差w/reg性能分析函数dmse 均方差性能分析函数的导数dmsereg 均方差w/reg性能分析函数的导数8. 学习函数learnp 感知器学习函数learnpn 标准感知器学习函数learnwh Widrow_Hoff学习规则learngd BP学习规则learngdm 带动量项的BP学习规则learnk Kohonen权学习函数learncon Conscience阈值学习函数learnsom 自组织映射权学习函数9. 自适应函数adaptwb 网络权与阈值的自适应函数10. 训练函数trainwb 网络权与阈值的训练函数traingd 梯度下降的BP算法训练函数traingdm 梯度下降w/动量的BP算法训练函数traingda 梯度下降w/自适应lr的BP算法训练函数traingdx 梯度下降w/动量和自适应lr的BP算法训练函数trainlm Levenberg_Marquardt的BP算法训练函数trainwbl 每个训练周期用一个权值矢量或偏差矢量的训练函数11. 分析函数maxlinlr 线性学习层的最大学习率errsurf 误差曲面12. 绘图函数plotes 绘制误差曲面plotep 绘制权和阈值在误差曲面上的位置plotsom 绘制自组织映射图13. 符号变换函数ind2vec 转换下标成为矢量vec2ind 转换矢量成为下标矢量14. 拓扑函数gridtop 网络层拓扑函数hextop 六角层拓扑函数randtop 随机层拓扑函数
学习面向MATLAB工具箱的人工神经网络的“同学”注意啦,以下是通过 help 命令,调出英文版的函数帮助文件,通过整理出来的几个中文版函数。
hardlim硬限制型传递函数
用法
A=hardlim(N)
info=hardlim(code)
说明
hardlim是一个传递函数,传递函数是通过层的网络输入来计算输出;
hardlim(N)需要一组网络输入N,N是一个S×Q的矩阵,由网络输入矢量组成,当N符合条件时,函数返回1,否则返回0;
hardlim(CODE)返回CODE中每一条字符串的有用信息:
deriv派生函数名
name全名
output输出范围
active有效的输入范围
实例
下面的代码将告诉你如何创建hardlim传递函数的图形
n=-5:0.1:5;
a=hardlim(n);
plot(n,a)
网络使用
你可以通过调用NEWP来创建一个使用了hardlim的标准网络;
通过设置网络层的传递函数为hardlim来改变网络结构,使得网络使用了hardlim;
任何情况下,可以调用SIM来模拟使用了hardlim的网络;
使用NEWP获得模拟实例;
算法
hardlim(n)=1,ifn>=0
0,otherwise
purelin线性传递函数
用法
A=purelin(N)
info=purelin(code)
说明
purelin是一个传递函数,传递函数通过层的网络输入来计算输出;
purelin(N)需要一组输入N,N是一个S×Q的矩阵,有网络输入矢量组成,函数返回N
purelin(CODE)返回CODE中每一条字符串的有用信息:
deriv返回派生函数名
name返回全名
output返回输出范围
active返回有效输入范围
实例
下面的代码用来创建purelin线性传递函数的图形
n=-5:0.1:5;
a=purelin(n);
plot(n,a)
网络使用
你可以通过调用NEWLIN或NEWLIND来创建一个使用了purelin的标准网络;
通过设置网络层的传递函数为purelin来改变网络,使得网络层使用了purelin;
任何情况下,可以调用SIM来模拟使用了purelin的网络;
使用NEWLIN或NEWLIND获得模拟实例;
算法
purelin(n)=n
maxlinlr线性层的最大学习速率
用法
lr=maxlinlr(P)
lr=maxlinlr(P,'bias')
说明
maxlinlr是用来为NEWLIN计算学习速率的
maxlinlr(P)需要一组参数P,P是一个R×Q的矩阵,由输入矢量组成;函数返回零偏差的线性层的最大学习速率,也就是说,网络只用P中的矢量来训练;
maxlinlr(P,'bias')返回带偏差bias的线性层的最大学习速率;
实例
下面我们定义了一个4组2元输入矢量来寻找一个带偏差的线性层的最大学习速率:
P=[12-47;0.13106];
lr=maxlinlr(P,'bias')
learnp感知器权值/偏差学习函数
用法
[dW,LS]=learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
[db,LS]=learnp(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)
info=learnp(code)
说明
learnp是感知器的权值/偏差学习函数;
learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)需要多个输入值
W是S×R的权矩阵(或者b,一个S×1的偏差矢量)
P是R×Q的输入矢量(或1×Q的单位矩阵)
Z是S×Q的加权输入矢量
N是S×Q的网络输入矢量
A是S×Q的输出矢量
T是S×Q的层目标矢量
E是S×Q的层误差矢量
gW是S×R的梯度参数
gA是S×Q的输出梯度参数
D是S×S的神经元距离
LP是学习参数,为空,即LP=[]
LS是学习状态,初始值也为空
dW是S×R的权(偏差)修正矩阵
LS是新的学习状态
learnp(CODE)返回CODE中每条字符串的有用信息
pnames返回学习参数的名称
pdefaults返回默认的学习参数
needg如果函数使用了gW或者gA时,返回1
实例
为一个具有二元输入和三个神经元的层定义了一个随机输入P和误差E
p=rand(2,1);
e=rand(3,1);
由于learnp计算权修正值仅需以上几个值(参阅下面的算法),这样我们就可以计算权修正值了:
dW=learnp([],p,[],[],[],[],e,[],[],[],[],[])
网络使用
你可以使用NEWP来创建一个使用了learnp的标准网络;
定义一个自定义网络每一层的权值和偏差来学习learnp
1)设定网络训练函数为trainb。网络训练参数将自动成为trainb的默认参数。
2)设定网络适应函数为trains。网络适应参数将自动成为trains的默认参数。
3)设定网络输入权值学习函数为learnp,设定网络层权值学习函数为learnp,设定网络偏差学习函数为learnp
(如果LEARNP没有学习参数时,每一个权值和偏差的学习参数属性将自动设定为空矩阵)
训练网络(或者使网络具有适应性):
1)设定网络训练参数(网络适应参数)的性能为期望值;
2)调用train(adapt);
使用NEWP获得适应性和训练实例;
算法
learnp根据感知器学习规则,通过神经元的输入矢量P和误差矢量E,计算一个给定的神经元的权修正值dW:
dw=0,ife=0
=p',ife=1
=-p',ife=-1
以上过程可总结为:
dw=e*p'
learnwh威德罗-霍夫权值/偏差学习函数
用法
[dW,LS]=learnwh(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
[db,LS]=learnwh(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)
info=learnwh(code)
说明
learnwh是威德罗-霍夫权值/偏差学习函数,遵循规则或最小均方差算法(LMS);
learnwh(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)需要多个输入,如下:
W——S×R的权矩阵(或b,S×1的偏差矢量)
P——R×Q的输入矢量(或1×Q的单位矢量)
Z——S×Q的权输入矢量
N——S×Q的网络输入矢量
A——S×Q的输出矢量
T——S×Q的层目标矢量
E——S×Q的层误差矢量
gW——S×R的梯度参数
gA——S×Q的输出梯度性能
D——S×S的神经元距离
LP——学习参数,为空,即LP=[]
LS——学习状态,初始LS=[]
函数返回值
dW——S×R的权(偏差)修正矩阵
LS——新的学习状态
学习过程根据learnwh的学习参数进行,学习速率的默认值为0.01
learnwh(CODE)返回CODE中每一条字符串的有用信息:
pname——返回学习参数的名称
pdefault——返回默认的学习参数
needg——如果函数使用了gW或gA时,返回1
实例
下面的例子我们为一个具有2元输入和3个神经元的层定义了一个随机输入矢量P、误差矢量E,以及学习速率lp.lr;
p=rand(2,1);
e=rand(3,1);
lp.lr=0.5;
由于learnwh计算权修正值仅需要以上几个值(参阅下面的算法),这样我们就可以计算权修正值了:
dW=learnwh([],p,[],[],[],[],e,[],[],[],lp,[])
网络使用
你可以通过NEWLIN来创建一个使用了learnwh的标准网络;
定义一个自定义网络中每一层的权值和偏差来学习learnwh:
1)设定网络学习函数为trainb。网络训练参数将自动成为trainb的默认参数。
2)设定网络适应性函数为trains。网络适应参数将自动成为trains的默认参数。
3)设定每一网络输入权值的学习函数为learnwh,设定每一网络层权值的学习函数为learnwh,设定网络偏差学习函数为learnwh。每一个权值和偏差学习参数的性能将自动被设定为learnwh的默认参数。
训练网络(或使网络具有适应性):
1)设定网络训练参数(或网络适应参数)的性能为期望值;
2)调用train(adapt);
使用NEWLIN获得适应性或训练实例;
算法
learnwh根据WH学习规则,通过神经元的输入矢量P、误差矢量E以及权值(偏差)的学习参数LR,计算给定神经元的权修正值:
dw=lr*e*pn