例如输入特征为10维,想训练一个10x20x10x1的三层ANN,代码可以这样写:
% 直接生成两个隐藏层即可
net=feedforwardnet([20,10]);
% 定义好输入和输出数组X,Y
net=train(net,X,Y)
% 这里要注意的一个问题,例如X原始定义的是[10000,10],Y定义的是[10000,1],
% 因为我们都喜欢定义列向量,这个时候需要改变代码
net=train(net,X',Y'); % 需要将X和Y进行转置
% 这个很简单
view(net)
注意,这里必须设置的是每层统一的激活函数。不可能设置每个神经元不同的激活函数。
% 例如将最后一层激活函数设置为线性函数
net.layers{end}.transferFcn='purelin';
注意,matlab中很多激活函数与普通激活函数命令不一样,例如tanh激活函数在matlab中为tansig,这个问题需要额外注意。
net.trainParam.regularization.type='L1'
[net,tr]=train(net,X,Y);
% tr中包含每轮训练epoch过程中的训练集、验证集、测试集误差变化
net.Iw % 由输入权重值组成的 numLayers x numInputs 元胞数组
net.Lw % 由层权重值组成的numLayers x numLayers 元胞数组
net.b % 由偏置值组成的numLayers x 1 元胞数组
net.trainParam.max_fail=10 % 指定最大连续失败次数,如果网络连续10次验证集没有改善,
% 则停止训练
上一篇:四川双马:公司经营平稳,将根据法律法规及时履行信息披露义务
下一篇:arm 堆栈