Matlab人工神经网络基本知识笔记

BP网络

  1. 建立网络
    老版本为newff函数,新版本为feedforwardnet
feedforwardnet(hiddenSizes,trainFcn)
%hiddenSizes为行向量,表示隐层尺寸,缺省值为10
%例如hiddenSizes = [2,3]表示隐层第一层有2个神经元,第二层有3个神经元
%trainFcn为训练方法,缺省值为'trainlm'

net.inputs{1}.processFcns = {};
net.outputs{2}.processFcns = {};
%旧版newff这个参数缺省值为空,新版newff和feedforwardnet这个参数缺省值为'mapminmax',即默认进行归一化。如数据集已经进行过归一化,可将该参数赋值为空。
  1. 数据集的划分
    分为训练集、验证集和测试集,分配方法如下:
net.divideFcn = 'dividetrain';%全部划分给训练集
net.divideFcn = '';%与'dividetrain'作用相同
net.divideFcn = 'dividerand';%缺省值,随机分配
%三个参数:net.divideParam.trainRatio, net.divideParam.valRatio, net.divideParam.testRatio
%训练集占比计算公式为:trainRatio/(trainRatio+valRatio+testRatio)
%其余二者占比也按照该方法计算。三个参数缺省值分别为0.7, 0.15, 0.15
  1. 初始化
  • 初始化函数的层次:

net.initFcn = 'initlay' %只能是 initlay

net.layers{i}.initFcn = 'initnw' 或 'initwb'

net.inputWeights{i,j}.initFcn = 'rands' , 'initzero' , 'midpoint' , 'randnc' , 'randnr' 或 'initsompc' 
net.layerWeights{i,j}.initFcn = 'rands' , 'initzero' , 'midpoint' , 'randnc' , 'randnr' 或 'initsompc' 
net.biases{i}.initFcn = 'rands' , 'initzero' 或 'initcon' [^1] 
  • 层初始化函数:
    • initwb: 根据各自的初始化函数,初始化层内所有权值和阈值。调用后需进一步设置各权值和阈值的初始化函数。
    • initnw: Nguyen Widrow初始化权值方法,要求传递函数的active区间是有限的,例如:tansig, logsig 和 satlin满足要求,purelin不满足要求。调用feedforwardnet 或 cascadeforwardnet函数建立的网络使用的是initnw。无需进一步设置。
  • 初始化的例子:
net.initFcn = 'initlay';
net.layers{i}.initFcn = 'initwb';
xornet.inputWeights{i,j}.initFcn = 'rands';
xornet.layerWeights{i,j}.initFcn = 'rands';
net.biases{i}.initFcn = 'rands';
net = init(net);
  1. 训练
    两种方式:adapt和train,详细说明参考[^2]。

参考资料:
[^1] https://www.docin.com/p-677805405.html
[^2] http://www.matlabsky.com/thread-4084-1-1.html
其余来自Matlab文档

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值