对于对象识别,我建议使用 MATLAB 中的神经网络。我有 30 个对象,每个对象有 20 个图像,因此我有 600 个输入数据和 20 个不同的类。输入矩阵为 100x600,目标矩阵为 1x600。输入矩阵列是 100 个 bin 中关键点色调的直方图,如下所示:(m,n)=hist(hue_val,100)
我拿的m
.
如果我选择 MLP 网络,需要多少层和这些层的神经元,哪些传递函数适合每层?
对于最后一个问题,我需要负样本吗?
- 层数 - 一般来说,单个隐藏层就足够了,因为(只要您使用非线性激活函数)单个层可以近似任意数量的层。
- 传递函数 - 我不习惯这个术语,但我假设您指的是激活函数(在将网络输入传递到下一层之前对网络输入执行的操作)。我回答了这个问题的一个细微变化here https://stackoverflow.com/q/7256509/821806,但要点是,像双曲正切或逻辑这样的标准选择在大多数情况下都有效。
- 隐藏层中的神经元数量 - Crodriguezo 的链接很好地解决了这一问题。我真正可以补充的是,根据您的输入大小,我可能会根据训练时间来确定这个数量。
- 负样本 - 如果您只需要对输入也属于 30 个对象中的哪一个进行分类,则不需要负样本。但是,如果测试输入可能是none30 个对象中的一个,那么肯定会使用大量的反例,这样网络就不会认为一切是一个对象。
一些一般提示:
请记住考虑留一法和类似的形式交叉验证 http://en.wikipedia.org/wiki/Cross-validation_%28statistics%29作为对抗过度拟合的方法。限制隐藏层的单位数量也可以做到这一点,但代价是表现的丰富性。
您没有提到的其他参数对于任何成功的 ANN 应用程序也非常重要。其中包括学习率、误差函数、退火时间表、动量和权重衰减。在这一点上,设置所有这些更多的是一门艺术而不是一门科学(反对使用人工神经网络与支持向量机的最佳论据之一),但是这link http://tedlab.mit.edu/~dr/Lens/thumb.html在这个领域对我来说是天赐之物。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)