use*_*926 12 computer-vision neural-network unsupervised-learning autoencoder
我正在使用卷积神经网络(无监督特征学习来检测特征+ Softmax回归分类器)进行图像分类.我已经完成了Andrew NG在这方面的所有教程.(http://sufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial).
我开发的网络有:
我已经学会了使用稀疏自动编码器将输入层连接到隐藏层的权重,因此具有400种不同的功能.
通过从任何输入图像(64x64)获取连续的8x8色块并将其输入到输入层,我得到400个大小(57x57)的特征图.
然后,我使用最大池与大小为19 x 19的窗口来获得400个大小为3x3的要素图.
我将此要素图提供给softmax图层,以将其分为3个不同的类别.
这些参数,例如隐藏层数(网络深度)和每层神经元数量,在教程中提出,因为它们已成功用于所有图像大小为64x64的特定数据集.
我想将它扩展到我自己的数据集,其中图像更大(比如400x400).我该如何决定
层数.
每层神经元的数量.
池化窗口的大小(最大池).
Hun*_*gry 24
隐藏层数: 所需隐藏层数取决于数据集的内在复杂性,可以通过查看每个层实现的内容来理解:
零隐藏层允许网络仅模拟线性函数.这对于大多数图像识别任务是不适当的.
一个隐藏层允许网络模拟任意复杂的功能.这适用于许多图像识别任务.
从理论上讲,两个隐藏层在单层上几乎没有什么好处,但是,在实践中,一些任务可能会发现一个有益的附加层.这应该谨慎对待,因为第二层可能导致过度拟合.使用两个以上的隐藏层是几乎没有益处 仅对特别复杂的任务有利,或者当有大量的训练数据时(根据Evgeni Sergeev评论更新).

简而言之,如果你有时间,那么测试一个和两个隐藏层,看看哪个能达到最满意的效果.如果你没有时间,那么你应该在一个隐藏层上采取一个平底船,你就不会出错.
卷积层数: 根据我的经验,卷积层越多越好(在合理范围内,因为每个卷积层减少了完全连接层的输入要素数量),尽管在大约两到三层之后,精度增益变得相当小所以你需要决定你的主要关注点是泛化准确性还是训练时间.也就是说,所有图像识别任务都是不同的,因此最好的方法是简单地尝试一次增加一个卷积层的数量,直到您对结果满意为止.
每个隐藏层的节点数量: ......再次,没有用于确定节点数量的神奇公式,每个任务的节点都不同.经过的粗略指导是使用前一层大小2/3的多个节点,第一层2/3是最终特征图的大小.然而,这只是一个粗略的指南,并且再次依赖于数据集.另一个常用选项是从过多的节点开始,然后通过修剪删除不必要的节点.
最大池化窗口大小: 我总是在卷积后直接应用最大池,所以我可能没有资格对你应该使用的窗口大小提出建议.也就是说,19x19最大池化似乎过于严重,因为它实际上会丢弃大部分数据.也许您应该看一下更传统的LeNet网络布局:
http://deeplearning.net/tutorial/lenet.html
https://www.youtube.com/watch?v=n6hpQwq7Inw
在其中您重复执行卷积(通常为5x5或3x3),然后进行最大池化(通常使用2x2池化窗口,但大型输入图像可能需要4x4).
结论 找到合适的网络布局的最佳方法是进行试验和错误测试.很多测试.没有一个适合所有人的网络,只有您知道数据集的内在复杂性.执行必要测试数量的最有效方法是通过交叉验证.