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函数的帮助文档后面有一些推荐的阅读材料,如下图
这里面有对上述结构体各个信息的详细解释。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/83049.html