matlab在深度学习的应用&相关函数
1.one-hot编码:用到的函数ind2vec,vec2ind。用法举例如下:对 index 的两种表示,一种是用向量化的 0,1 矩阵表示(稀疏矩阵,one-hot编码),一种是用线性数值 1,2,3表示vec = [1 0 0 0; 0 0 1 0; 0 1 0 1]ind = vec2ind(vec)结果&解释:vec =1 0 0 00 0 1 00 ...
1.one-hot编码:用到的函数ind2vec,vec2ind。
用法举例如下:
对 index 的两种表示,一种是用向量化的 0,1 矩阵表示(稀疏矩阵,one-hot编码),一种是用线性数值 1,2,3表示 |
vec = [1 0 0 0; 0 0 1 0; 0 1 0 1]
ind = vec2ind(vec)
结果&解释:
vec =
1 0 0 0
0 0 1 0
0 1 0 1
ind =
1 3 2 3
**结果解释:
ind以列为单位(与原向量列)相同,分别对应列表示"1"所在行的位置,从第一列开始,1所在的位置(行)分别为,第一行(1),第三行(3),第二行(2),第三行(3)
反之,ind2vec道理相同,举例:
ind = [1 3 2 3]
vec = full(ind2vec(ind))
结果:
ind =
1 3 2 3
vec =
1 0 0 0
0 0 1 0
0 1 0 1
2.matlab神经网络工具箱主要参数说明:
常见的训练函数:
训练方法 训练函数
- 梯度下降法 traingd
- 有动量的梯度下降法 traingdm
- 自适应lr梯度下降法 traingda
- 自适应lr动量梯度下降法 traingdx
- 弹性梯度下降法 trainrp
- Fletcher-Reeves共轭梯度法 traincgf
- Ploak-Ribiere共轭梯度法 traincgp
- Powell-Beale共轭梯度法 traincgb
- 量化共轭梯度法 trainscg
- 拟牛顿算法 trainbfg
- 一步正割算法 trainoss
- Levenberg-Marquardt trainlm
神经网络的学习参数:
训练参数 参数介绍
- net.trainParam.epochs 最大训练次数(缺省为10)
- net.trainParam.goal 训练要求精度(缺省为0)
- net.trainParam.lr 学习率(缺省为0.01)
- net.trainParam.max_fail 最大失败次数(缺省为5)
- net.trainParam.min_grad 最小梯度要求(缺省为1e-10)
- net.trainParam.show 显示训练迭代过程(NaN表示不显示,缺省为25)
- net.trainParam.time 最大训练时间(缺省为inf)
- net.trainParam.mc 动量因子(缺省0.9)
- net.trainParam.lr_inc 学习率lr增长比(缺省为1.05)
- net.trainParam.lr_dec 学习率lr下降比(缺省为0.7)
- net.trainParam.max_perf_inc 表现函数增加最大比(缺省为1.04)
- net.trainParam.delt_inc 权值变化增加量(缺省为1.2)
- net.trainParam.delt_dec 权值变化减小量(缺省为0.5)
- net.trainParam.delt0 初始权值变化(缺省为0.07)
- net.trainParam.deltamax 权值变化最大值(缺省为50.0)
- net.trainParam.searchFcn 一维线性搜索方法(缺省为srchcha)
- net.trainParam.sigma 因为二次求导对权值调整的影响参数(缺省值5.0e-5)
- net.trainParam.lambda Hessian矩阵不确定性调节参数(缺省为5.0e-7)
- net.trainParam.men_reduc 控制计算机内存/速度的参量,内存较大设为1,否则设为2(缺省为1)
- net.trainParam.mu u的初始值(缺省为0.001)
- net.trainParam.mu_dec u的减小率(缺省为0.1)
- net.trainParam.mu_inc u的增长率(缺省为10)
- net.trainParam.mu_max u的最大值(缺省为1e10)
神经网络学习主要函数说明
newff:前馈网络创建函数
语法:
- net = newff(A,B,{C},’trainFun’,’BLF’,’PF’)。
- A:一个n*2的矩阵,第i行元素为输入信号Xi的最大最小值
- B:一个K维行向量,其元素为网络中各个节点的数量。
- C:一个K维字符串行向量,每一个分量为对应层的神经元的激活函数,默认为“tansig”
- trainFun:为学习规则的采用的训练算法。默认为:“trainlm”
- BLF:BP权值/偏差学习函数。默认为:“learngdm”
- PF:性能函数,默认为“mse”
--------------------------------------------穿插newff具体用法,后期整理---------------------------------------------
1,newff函数参数说明
net = newff(P,T,S) % 这两种定义都可以
net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
1
2
P:输入参数矩阵。(RxQ1),其中Q1代表R元的输入向量。其数据意义是矩阵P有Q1列,每一列都是一个样本,而每个样本有R个属性(特征)。一般矩阵P需要归一化,即P的每一行都归一化到[0 1]或者[-1 1]。
T:目标参数矩阵。(SNxQ2),Q2代表SN元的目标向量。
S:N-1个隐含层的数目(S(i)到S(N-1)),默认为空矩阵[]。输出层的单元数目SN取决于T。返回N层的前馈BP神经网络
TF:相关层的传递函数,默认隐含层为tansig函数,输出层为purelin函数。
BTF:BP神经网络学习训练函数,默认值为trainlm函数。
BLF:权重学习函数,默认值为learngdm。
PF:性能函数,默认值为mse,可选择的还有sse,sae,mae,crossentropy。
IPF,OPF,DDF均为默认值即可。
例子:
net = newff( input,output, [50] , { 'logsig' 'purelin' } , 'traingdx' ) ;
1
2,传递函数TF
purelin: 线性传递函数。
tansig :正切S型传递函数。
logsig :对数S型传递函数。
隐含层和输出层函数的选择对BP神经网络预测精度有较大影响,一般隐含层节点转移函数选用 tansig函数或logsig函数,输出层节点转移函数选用tansig函数或purelin函数。
3,学习训练函数BTF
traingd:最速下降BP算法。
traingdm:动量BP算法。
trainda:学习率可变的最速下降BP算法。
traindx:学习率可变的动量BP算法。
trainrp:弹性算法。
变梯度算法:
traincgf(Fletcher-Reeves修正算法)
traincgp(Polak_Ribiere修正算法)
traincgb(Powell-Beale复位算法)
trainbfg(BFGS 拟牛顿算法)
trainoss(OSS算法)
4,参数说明
通过net.trainParam可以查看参数
Show Training Window Feedback showWindow: true
Show Command Line Feedback showCommandLine: false
Command Line Frequency show: 两次显示之间的训练次数
Maximum Epochs epochs: 训练次数
Maximum Training Time time: 最长训练时间(秒)
Performance Goal goal: 网络性能目标
Minimum Gradient min_grad: 性能函数最小梯度
Maximum Validation Checks max_fail: 最大验证失败次数
Learning Rate lr: 学习速率
Learning Rate Increase lr_inc: 学习速率增长值
Learning Rate lr_dec: 学习速率下降值
Maximum Performance Increase max_perf_inc:
Momentum Constant mc: 动量因子
-------------------------------------------分割线----------------------------------------------------------------------------
train函数 即网络学习函数
语法:
- [net,tr,YI,E] = train(net,X,Y)
- X:网络实际输入
- Y:网络应有输出
- tr:网络跟踪信息
- YI:网络实际输出
- E:误差矩阵
sim函数
语法:
- Y = sim(net,X)
- X:输入给网络的K*N矩阵,K为网络输入个数,N为样本数据量
- Y:输出矩阵Q*N,其中Q为网络输出个数
一个完整的神经网络训练模型demo如下:
clear,clc
p=[-4:0.1:4]; %神经网络输入值
t=sin(pi*p); %神经网络目标值
n=15; %隐藏层神经元个数
net=newff(minmax(p),[1,n,1],{'tansig','tansig','purelin'},'trainlm'); %建立网络结构
net.trainParam.epochs=200; %最大训练步数
net.trainParam.goal=0.1; %最大训练误差
net=train(net,p,t); %训练网络
y=net(p); %神经网络输出值
plot(p,t,'*',p,y,'-')
title('使用BP神经网络函数逼近');
xlabel('输入值');
ylabel('目标值/输出值');
mse=mse(y,t) %实际误差
感谢参考:
BP神经网络逼近非线性函数——Matlab工具箱 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/370009532
更多推荐
所有评论(0)