MATLAB中patternnet函数返回的网络结构中各个参数的含义

matlab中有大量与神经网络相关的app,库函数,…,可以很方便地进行神经网络相关方面的学习和应用。采用app进行可视化操作,上手比较快,但是这样往往忽视了对神经网络本质的理解,难以根据实际应用场景合理调整神经网络结构以及其他各个超参数,所以当对神经网络有了一定了解之后,可以选择采用matlab神经网络库函数进行处理。目前matlab里面常用的简单的神经网路库函数有newff和patternnet,其中newff函数可设置的参数比较多,但是它似乎更适合于处理回归类问题(当然分类问题也可以转化成回归类问题进行处理),它的损失函数好像不能设置为crossentropy函数?也不能采用softmax函数作为激活函数?(不知道是真的不支持这个设置,还是我没理解清楚,毕竟我只是一个神经网络的门外汉)所以对分类问题的支持并不是很全面。而patternnet函数似乎是专门为分类问题而设置的,直接通过该函数手动设置的参数比较少(只有神经网络层数,模型训练方法和模型的损失函数),它默认的损失函数就是crossentropy函数,且要求输入的标签必须是one-hot编码的形式,根据其输出结果中各个类别的概率和加起来恒等于1,似乎可以推断出它的输出层的激活函数是softmax。patternnet返回训练得到的神经网络结构体,这个结构体包含的信息很丰富,不仅可以通过该结构体详细了解所采用的神经网络的各个详细信息,而且可以通过它设置一些patternnet函数接口所不能直接设置的参数,比如设置各层的激活函数。该结构体的信息如下图所示

以下对这个结构体内的某些信息进行解释说明:

name:这个表示网络的名称,这仅仅用于显示,可以手动修改成任意名称,如net.name=‘gggg’;

numInputs:这个表示的是网络的输入数据集数,注意它并不是表示网络输入样本的特征维数。这个参数一般设置为1;

numLayers:这个参数表示网络的层数,不过这个网络层数应该是不包括输入层,这个参数是可以手动进行修改的,不过修改这个参数会对后续所有的权值、偏置等造成很大的影响,所以这个参数一般不进行修改;

numWeightElements:这个参数表示这个网络所有的权值和偏置值的数目,设网络从输入层到输出层的维数分别为,那么这个参数的值可以计算为;

biasConnect: 表示某一层是否有偏置值,是一个Nx1的矩阵,N表示网络层数(不包括输入层);

inputConnect:表示某一层是否有与输入层连接的权值,也是NxnumInputs的矩阵;

layerConnect:表示某一层是否有来自其他层的权值,表示为NxN维矩阵;

outputConnect:表示某一层是否产生输出,Nx1矩阵;

inputs:表示输入的一些配置,它包括以下很多内容,其中i的取值最大为numInputs,这个cell里面的详细内容有需要的时候再去了解;

layers:这个参数给出了每一层(不包括输入层)的各项设置参数,具体的参数如下图所示

这里面确实给出了很多有用的信息,比如说它可以查看每一层所用的transfer function,如可以通过net.layers{1}.transferFcn查看第一个隐层的transfer function(通过查看该参数可知patternnet函数隐层默认的transfer function 是’tansig’,输出层默认的transfer function 是’softmax’),也可以通过net.layers{i}.transferFcn='xxx’将第i层的transfer function设置成xxxx函数;

outputs:给出了与输出层相关的一些信息,具体信息如下图所示

biases:这个参数给出了每层偏置相关的一些信息,具体信息如下图所示

inputWeights:其实不是很清楚这个参数的具体含义是什么,这个weights到底指的是什么weight?它包含以下具体信息,其中i表示网络第i层,j表示第j个网络输入数据集(与numInputs对应)

layerWeights:这个应该是指两层之间的权值的相关信息,具体信息如下图,其中i,j分别表示网络的第i层和第j层;

function模块包含的一系列参数在实际应用中设置得比较频繁,这里面的参数和方法针对的是整个网络,而不是针对网络的某部分结构,比如若设置net.trainFcn='trainscg’表示的是将整个网络参数训练的方法设置为scg算法,而不是某一层权值的训练设置为scg算法。这个模块包含的功能比较杂也比较强大,比如可以通过net.divideParam.trainRatio=0.7,…,分别设置训练集,验证集和测试集的比例;比如可以通过net.performFcn=‘mse’,设置网络的损失函数;比如可以设置训练的步长,迭代次数、允许误差等;比如可以可视化网络各种性能,ROC曲线,训练误差,模糊矩阵等。总之这个模块里面的参数和方法有时间需要好好研究。

IW,LW和b里面保存的是网络训练得到的最终的权值和偏置值。

最后methods模块下面的内容其实没有太多需要注意的地方,所以这边就不多讲。

需要注意的是要利用patternnet函数训练得到的模型进行预测只需要采用如下格式进行:net(inputdata)。

注:某一天发现matlab里面patternnet函数的帮助文档后面有一些推荐的阅读材料,如下图

这里面有对上述结构体各个信息的详细解释。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值