训练神经网络技巧

时间:2011-09-02 14:30:30

标签: matlab neural-network

对于物体识别建议我在MATLAB中使用神经网络。我有30个对象和每个对象20个图像,所以我有600个输入数据和20个不同的类。输入矩阵为100x600,目标为1x600。输入矩阵列是关键点的Hue在100个箱中的直方图,如下所示:(m,n)=hist(hue_val,100)我选择了m
如果我选择了MLP网络,那么这些层需要多少层和神经元,哪些传递函数适用于每一层?

对于最后一个问题,我需要负面样本吗?

2 个答案:

答案 0 :(得分:6)

  • 层数 - 通常,单个隐藏层就足够了(因为使用非线性激活函数这么长时间),单个层可以接近任意数量的层。
  • 传递函数 - 我不熟悉这个术语,但我认为你的意思是激活函数(你在将它传递到下一层之前对净输入做了什么)。我回答了这个问题here的一个略微变体,但要点是在大多数情况下像双曲正切或逻辑的标准选择。
  • 隐藏层中的神经元数量 - crodriguezo的链接非常好地完成了这个。我真正可以补充的是,根据你的输入大小,我可能会将这个数量基于训练时间。
  • 负样本 - 如果您只需要对输入所属的30个对象中的哪一个进行分类,则不需要负样本。但是,如果测试输入可能是30个对象的 none ,那么肯定会使用大量的负面示例,因此网络不会认为所有都是对象。

一些一般提示:

请记住考虑留一法和类似形式cross validation作为对抗过度拟合的方法。限制隐藏图层的单位数也可以做到这一点,但代价是表现丰富。

您未提及的其他参数对任何成功的ANN应用也非常重要。这些包括学习率,误差函数,退火计划,动量和重量衰减。设置所有这些在这一点上更像是一门艺术,而不是一门科学(反对使用人工神经网络与支持向量机器的最佳论据之一),但这个link对我来说是一个天赐之物。

答案 1 :(得分:3)

当我问自己时,我发现这个page也许这会有所帮助。

修改

抱歉,我想链接到这个page,你可以在那里找到不同的问题,比如我应该使用多少隐藏层?或者我应该使用多少隐藏单位?