如何设计深度卷积神经网络? [关闭]
Posted
技术标签:
【中文标题】如何设计深度卷积神经网络? [关闭]【英文标题】:How to design deep convolutional neural networks? [closed] 【发布时间】:2016-09-13 20:04:09 【问题描述】:据我了解,所有 CNN 都非常相似。它们都有一个卷积层,然后是池化层和 relu 层。有些具有专门的层,例如 FlowNet 和 Segnet。我的疑问是我们应该如何决定使用多少层以及我们如何为网络中的每一层设置内核大小。我已经搜索了这个问题的答案,但我找不到具体的答案。网络是使用试错法设计的,还是一些我不知道的特定规则?如果您能澄清这一点,我将非常感谢您。
【问题讨论】:
【参考方案1】:简短回答:如果有设计规则,我们还没有发现。
请注意,计算中有类似的问题。例如,请注意只有少数基本的电子逻辑单元,即驱动制造技术的门。所有计算设备都使用相同的布尔逻辑;有些有专门的附加功能,例如光电输入或机械输出。
您如何决定如何设计您的计算设备?
设计取决于 CNN 的用途。输入特性、准确性、训练速度、评分速度、适应度、计算资源……所有这些都会影响设计。即使对于给定的问题,也没有通用的解决方案(目前)。
例如,考虑 ImageNet 分类问题。请注意迄今为止获胜者和竞争者之间的结构差异:AlexNet、GoogleNet、ResNet、VGG 等。如果您更改输入(例如,更改为 MNIST),那么这些都是矫枉过正的。如果你改变范式,它们可能毫无用处。 GoogleNet 可能是图像处理的王子,但将法语口语翻译成书面英语是可怕的。如果您想在视频屏幕上实时跟踪冰球,请完全忘记这些实现。
到目前为止,我们都是以经验的方式来做这件事的:很多人尝试了很多不同的事情来看看什么是有效的。我们感觉什么会提高准确性,或训练时间,或任何我们想要调整的因素。我们发现什么在总 CPU 时间上效果很好,或者我们可以并行做什么。我们改变算法以利用长度为 2 的向量数学。我们稍微改变问题,看看学习如何适应其他地方。我们改变领域(例如,将图像处理改为书面文本),然后重新开始——但一旦我们开始考虑某些类型的层,就会模糊地意识到什么可能会调整特定的瓶颈。
请记住,CNN 真正流行的时间并不长,仅仅 6 年。在大多数情况下,我们仍在努力了解重要的问题可能是什么。欢迎加入研究团队。
【讨论】:
我也有同样的问题。尽管您认为选择经验方法的结论是准确的,但我无法理解是否至少有一些设计过程可以开始制作模型?仅仅将图层放在另一个之上并期望它们给出一个准确的结果是太随机了。应该有一些关于如何开始的基本指南,然后可以使用经验方法来微调模型。 @Qazi 在您提出问题的级别上,没有这样的指导方针。听起来您好像在要求“如何制作模型?”的实用、适用的指导方针。除非您根据模型的一般特征对模型进行分类,否则我们甚至不能说 CNN 可能是一个好的解决方案。对于大多数建模情况,神经网络是对计算资源的浪费。 @Qazi 你是对的,只是开始将图层拍打在一起是不切实际的。相反,您需要分析您的输入纹理,考虑您想要的建模目的和性能,确定您可以从输入中获得哪些可能导致您想要的输出的特征,然后对网络拓扑进行试验体现这些特点。输入纹理相对较小的变化通常会导致模型拓扑发生较大的变化。 感谢您的完整回答。然而,这已经是将近 2 年的时间了。更新值得一提吗?对于 RNN 和 LSTM,我也有同样的问题。 是的,更新绝对值得一提!如果你有什么要补充的,请做。你提示我添加一个我在年初发现的链接。您关于 RNN 和 LSTM 的问题是完全正确的;请作为一个单独的问题发布,链接到这个问题以供参考。以上是关于如何设计深度卷积神经网络? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
基于深度卷积神经网络的图像风格迁移 与神经涂鸦系统的设计与实现
基于深度卷积神经网络的图像风格迁移 与神经涂鸦系统的设计与实现
卷积填充步长;卷积神经网络的卷积核大小个数,卷积层数如何确定呢;深度学习如何调参;
卷积填充步长;卷积神经网络的卷积核大小个数,卷积层数如何确定呢;深度学习如何调参;