如何设计深度卷积神经网络?

时间:2016-05-17 15:47:51

标签: neural-network deep-learning caffe convolution conv-neural-network

据我了解,所有CNN都非常相似。它们都有一个卷积层,然后是池和relu层。有些人有像FlowNet和Segnet这样的专门层。我怀疑的是我们应该如何决定使用多少层以及如何为网络中的每个层设置内核大小。我已经找到了这个问题的答案,但我找不到具体的答案。网络是使用反复试验设计的,还是我不了解的一些特定规则?如果你能澄清一下,我将非常感谢你。

2 个答案:

答案 0 :(得分:35)

简短回答:如果有设计规则,我们还没有发现它们。

请注意,计算中存在类似的问题。例如,请注意,只有少数几个基本的电子逻辑单元,即驱动您的制造技术的大门。所有计算设备使用相同的布尔逻辑;有些还有专门的附加功能,如光电输入或机械输出。

您如何决定如何设计您的计算设备?

设计取决于CNN的目的。输入特性,准确度,训练速度,得分速度,适应性,计算资源......所有这些都会影响设计。即使对于给定的问题,也没有通用的解决方案。

例如,考虑ImageNet分类问题。请注意到目前为止赢家和竞争者之间的结构差异:AlexNet,GoogleNet,ResNet,VGG等。如果您更改输入(例如,更改为MNIST),那么这些都是过度的。如果你改变范式,它们可能毫无用处。 GoogleNet可能是图像处理的王子,但将法语翻译成书面英语却很可怕。如果您想在视频屏幕上实时跟踪冰球,请完全忘记这些实施。

到目前为止,我们以经验的方式做到这一点:很多人尝试了很多不同的事情来看看它是否有效。我们得到感受,以提高准确性,培训时间或我们想要调整的任何因素。我们发现什么与总CPU时间有关,或者我们可以并行执行什么。我们改变算法以利用矢量数学的长度为2的幂。我们稍微改变问题,看看学习如何适应其他地方。我们将域名(例如,图像处理更改为书面文本),并从头开始 - 但是一旦我们开始考虑某些类型的图层,就会模糊地调整特定的瓶颈。

请记住,CNN确实很久没有流行,仅仅6年。在大多数情况下,我们仍在尝试了解重要问题。欢迎来到研究团队。

更新

有关在某些常见情况下似乎有效的策略的一些提示,请参阅this page

答案 1 :(得分:5)

设计CNN架构以获得最佳输出是一项艰巨而且多次的经验工作,但是有一些特定的技巧和技术(其中一些证明也存在)用于设计网络。

请阅读由kaggler撰写的标题为"A practical theory for designing very deep convolutional neural networks"的文档,该文件使用这些简单的规则实现了近乎最先进的结果。

相关问题