补丁/内核的大小如何影响卷积网络的结果?

Posted

技术标签:

【中文标题】补丁/内核的大小如何影响卷积网络的结果?【英文标题】:How does the size of the patch/kernel impact the result of a convnet? 【发布时间】:2018-01-14 07:00:06 【问题描述】:

我在家里用 tensorflow 玩卷积神经网络(顺便说一句,我已经完成了 udacity 深度学习课程,所以我有理论基础)。 运行卷积时,patch 的大小有什么影响?当图像变大/变小时,这样的尺寸是否必须改变?

我做的其中一个练习涉及图像的 CIFAR-10 数据库(32x32 像素),然后我使用了 3x3 的卷积(填充为 1),得到了不错的结果。

但是现在假设我想使用比这更大的图像(比如 100x100),我应该让我的补丁更大吗?我让它们保持 3x3 吗?此外,制作一个非常大的补丁会有什么影响? (比如说 50x50)。

通常我会在家里直接测试,但是在我的电脑上运行它有点慢(没有 nvidia GPU!)

所以问题应该总结为

    当我的输入图像更大/更小时,我应该增加/减少补丁的大小吗? 增加/减少路径大小有什么影响(在性能/过度拟合方面)?

【问题讨论】:

【参考方案1】:

如果不使用padding,较大的内核会使下一层的神经元数量变少。

示例:大小为 1x1 的内核给下一层相同数量的神经元;大小为 NxN 的内核在下一层只给出一个神经元。

较大内核的影响:

计算时间更快,内存占用更小 丢失了很多细节。想象一下 NxN 输入神经元,内核大小也是 NxN,那么下一层只给你一个神经元。丢失很多细节会导致拟合不足。

答案:

    这取决于图像,如果您需要图像中的大量细节,则无需增加内核大小。如果你的图像是 1000x1000 像素的 MNIST 图像的大版本,我会增加内核大小。 较小的内核会给你很多细节,它会导致你过拟合,但更大的内核会给你丢失很多细节,它会导致你欠拟合。您应该调整模型以找到最佳尺寸。有时,应考虑时间和机器规格

如果您使用填充,您可以进行调整,使卷积后的结果神经元相同。我不能说它会比不使用填充更好,但仍然会丢失更多细节而不是使用更小的内核

【讨论】:

【参考方案2】:

这更多地取决于您想要检测的对象的大小,或者换句话说,您想要拥有的感受野的大小。然而,选择内核大小始终是一个具有挑战性的决定。这就是创建使用不同内核大小(1x1、3x3、5x5)的 Inception 模型的原因。该模型的创建者还更深入地尝试将卷积层分解为具有较小块大小的层,同时保持相同的感受野以尝试加快训练速度(例如,5x5 被分解为两个 3x3,3x3 被分解为 3x1 和1x3) 创建不同版本的初始模型。

您也可以查看 Inception V2 论文了解更多详情https://arxiv.org/abs/1512.00567

【讨论】:

以上是关于补丁/内核的大小如何影响卷积网络的结果?的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow卷积网络——维度(形状)是如何计算的?

卷积神经网络 - 多通道

如何设计深度卷积神经网络? [关闭]

理解CNN卷积层与池化层计算

卷积填充步长;卷积神经网络的卷积核大小个数,卷积层数如何确定呢;深度学习如何调参;

卷积填充步长;卷积神经网络的卷积核大小个数,卷积层数如何确定呢;深度学习如何调参;