MATLAB神经网络2-配置
无论什么时候要注意输入数据的组织形式,列表示每个样本的维度,而行表示样本的个数
configure
相当于配置网络,输入网络输入与输出的大小、范围、输入输出预处理、初始权重,从而匹配输入与目标数据(标签)
注意:如果没有进行单独configure,那么在调用train时会自动配置。再有上述内容均可单独创建
net = configure(net,x,t) x为输入,t为目标输出
net = configure(net,x) 仅配置输入
net = configure(net,'inputs',x,i) i表x中的索引,表示指定x中的项为输入
net = configure(net,'outputs',t,i)
init
netsum 输入函数
属于layers层函数
相当于带权的输入+偏置(netsum定义的是+操作)
属于输入函数 help nnnetinput
net.layers{1}.netInputFcn='netsum'
dotprod 权重函数
输入权重函数help nnweight
相当于输入与权重的关系定义,输出的是带权输入
表示的是权重与输入(特征)进行乘积运算
learnp
感知器学习规则,
学习规则就是计算权重和偏置的改变
注意:权重和偏置均有学习函数
learnpn
感知器学习规则,消除外点的影响
initzero
感知器初始权重为0
输入输出
一般来讲,大多数网络自动的转换输入和目标的值来使网络更好的进行训练
但是也开始在configure后进行配置
输入数据类型转换
并行输入组织成矩阵,序列输入组织成元胞数组
con2seq和seq2con函数
并行输入与序列输入之间的转换
输入数据的组织
训练集:计算梯度并更新网络权重和偏置
验证集:在训练过程中,验证集的误差被监视。训练初期,训练即的误差减少,验证集的误差也会减小,但是当网络开始过拟合数据后,验证集的误差会上升,对应于验证集误差最小时的权重和偏置会被保存。
测试集:不在训练中使用,而用于比较不同的模型,也被用来绘制训练过程中的误差,
(如果测试集达到最小误差时的迭代次数与验证集达到最小误差迭代次数不同时,数据集的划分可能不太好???)
组织函数
一般不用人为指定,在train时自动执行
dividerand 默认,随机划分数据
divideblock
divideint
divideind
net.divideFcn
net.divdeParam
输入属性(处理函数)
net.inputs{1}.processFcns %表示第一个输入向量,我觉得这里尽管是元胞数组定义的,但是每个元胞元素都可以是一个由多个样本组成的输入矩阵,
net,inputs{1}.processParmas{i} %处理函数的参数,
输出属性(处理函数)
net.outputs{2}.processFcns
net,outputs{2}.processParmas{i}
注意索引表示的含义
输入处理函数(同理输出处理函数)
下面是默认的函数
一般情况下不需要人为去指定,仿真或训练train时会自动执行
removeconstantrows
剔除无用的信息
mapminmax
将输入和目标归一化到[-1,1]范围
下面是不是默认的函数
mapstd
将输入和目标归一化到0均值单位方法
processpca
对输入向量执行PCA
fixunknows
处理未知输入,与NaN数值有关