如何确定卷积神经元网络的架构

时间:2017-03-12 13:03:42

标签: computer-vision deep-learning

如何确定卷积神经元网络的架构

我正在研究计算机视觉中的深度学习。

我读了很多关于神经网络,反向传播,随机梯度下降,过度拟合,正则化等的工作原理。 有很难的'数学规则:这很容易理解。

但是,我怎么知道我的卷积神经元网络所需的架构是什么? 对于Exmaple:我想对这些植物进行分类: http://www.biohof-waldegg.ch/Bilder/Blacke%201%20(Individuell).JPG

我用mnist数据库(手写数字数据库)研究过例子 - 为什么使用这些架构的大多数示例:Conv 5x5 - >合并(2,最大) - > Conv5x5?   我已经绘制了第一个隐藏层的权重,但图像过滤器看起来不是很好   对我来说很熟悉(也不像用于边缘检测的高通滤波器,也不像低通滤波器)

  • 最好在图层中添加更多要素贴图还是添加更多隐藏图层?
  • 如何确定网络是否太深/太浅
  • 如何判断图层是否包含太多/太少的要素图?
  • 如何确定内核大小是否太大/太小?
  • 当我选择conv时 - >转化 - >汇集而不是转换 - >汇集 - > CONV?
  • 有什么影响有stride参数? (我知道这个参数是做什么的,但不知道我何时以及如何调整这些参数?
  • 有没有办法检查哪个功能层正在检测? (例如边/颜色/形状)

1 个答案:

答案 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