2014-04-07 133 views
0

最近,我尝试使用Matlab内置神经网络工具箱来完成我的分类问题。但是,我对参数设置有一些疑问。使用Matlab进行神经网络分类的参数设置

a。隐藏层中神经元的数量:

该页面上的示例Matlab neural networks classification example示出了两层(即,一个隐藏层和一个输出层)前馈神经网络。在这个例子中,它使用10元隐藏层

net = patternnet(10); 

我的第一个问题是如何界定的神经元的数量最好为我的分类问题?我应该使用交叉验证方法来使用训练数据集来获得最佳数量的神经元吗?

b。有没有一种方法可以选择三层或更多的多层神经网络?

c。我们可以在神经网络工具箱中使用许多不同的训练方法。列表可以在Training methods list找到。该网页提到最快的训练功能通常是'训练';但是,一般来说,哪一个表现最好?或者完全取决于我使用的数据集? d)。在每种训练方法中,都有一个名为'epochs'的参数,这是我理解的训练迭代。对于每种训练方法,Matlab都定义了训练时间的最大数目。然而,从example,它似乎是'时代'是我们可以调整的另一个参数。我对吗?或者我们只设置最大数量的纪元或将其保留为默认值?

任何使用Matlab神经网络工具箱的经验都是值得欢迎的,非常感谢您的回复。 A.

回答

0

a。你可以参考How to choose number of hidden layers and nodes in neural network?ftp://ftp.sas.com/pub/neural/FAQ3.html#A_hu
当然,你可以做交叉验证来确定最佳数量的神经元的参数。但不推荐使用它,因为它更适合在特定网络的权重训练阶段使用它。

b。参考ftp://ftp.sas.com/pub/neural/FAQ3.html#A_hl
对于更多的神经网络层,您可以参考Deep Learning,这是近年来非常热门的并且在许多模式识别任务中获得了最先进的性能。

c。这取决于你的数据。在训练大型网络和模式识别网络时,trainlm在函数拟合(非线性回归)问题上比在模式识别问题上表现更好,trainscg和trainrp是很好的选择。通常建议使用渐变下降和弹性反向传播。更详细的比较可以在这里找到:http://www.mathworks.cn/cn/help/nnet/ug/choose-a-multilayer-neural-network-training-function.html

d。你是对的。我们可以调整时代参数。一般来说,您可以输出每个时代的识别结果/精确度,并且您会看到它的推广速度越来越慢,越多的时代计算时间越多。您可以在准确性和计算时间之间做出妥协。

0

对于部分b你的问题: 您可以使用这样的代码:

net = patternnet([10 15 20]); 

该脚本创建与第一层有10个神经元3隐层的网络,第二层有15个​​神经元和第3层有20个神经元。