如何确定卷积神经元网络的架构
我正在研究计算机视觉中的深度学习。
我读了很多关于神经网络,反向传播,随机梯度下降,过度拟合,正则化等的工作原理。 有很难的'数学规则:这很容易理解。
但是,我怎么知道我的卷积神经元网络所需的架构是什么? 对于Exmaple:我想对这些植物进行分类: http://www.biohof-waldegg.ch/Bilder/Blacke%201%20(Individuell).JPG
我用mnist数据库(手写数字数据库)研究过例子 - 为什么使用这些架构的大多数示例:Conv 5x5 - >合并(2,最大) - > Conv5x5? 我已经绘制了第一个隐藏层的权重,但图像过滤器看起来不是很好 对我来说很熟悉(也不像用于边缘检测的高通滤波器,也不像低通滤波器)
答案 0 :(得分:3)
如何构建神经网络(或CNN)并没有严格的,经过验证的规则。这是一个悬而未决的问题。
为什么使用这些架构的大多数示例:Conv 5x5 - >合并(2,最大) - > Conv5x5
事实并非如此。大多数体系结构使用3x3池,因为后续池化层将感知域扩展为任意大小。根据经验,一些研究人员(例如Rethinking the Inception Architecture for Computer Vision)发现这些工作更好。
如何确定网络是否太深/太浅
如何确定内核大小是否太大/太小?
默认使用3x3。请参阅Rethinking the Inception Architecture for Computer Vision了解原因。
我何时选择
conv -> conv -> pooling
代替conv -> pooling -> conv
?
我宁愿写conv -> conv -> pooling
而不是conv -> pooling
,因此问题是"我如何确定应该有多少后续卷积层。同样,这是一个悬而未决的问题。大多数人选择2或3个后续的卷积层,但最后它似乎归结为"只是尝试它"。 (如果有更多的工程方法,请告诉我!)
有什么影响有stride参数?
Stride减小了输出要素图的大小。因此它会大大减少你的内存占用(* 1 / stride ^ 2)。
有没有办法检查图层正在检测哪些功能?
Zeiler&弗格斯:Visualizing and Understanding Convolutional Networks