计算卷积层中的输出大小

Posted

技术标签:

【中文标题】计算卷积层中的输出大小【英文标题】:Calculate the output size in convolution layer [closed] 【发布时间】:2019-05-03 22:34:17 【问题描述】:

如果神经网络卷积层的输入是大小为 128X128X3 的图像并应用 40 个大小为 5X5 的过滤器,那么输出大小是多少?

【问题讨论】:

我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 machine-learning @ 中的介绍和注意事项987654322@. 【参考方案1】:

你可以使用这个公式[(W−K+2P)/S]+1

W 是输入音量 - 在你的情况下是 128 K 是内核大小 - 在您的情况下为 5 P 是填充 - 在你的情况下我相信 0 S 是步幅 - 您没有提供。

所以,我们输入公式:

Output_Shape = (128-5+0)/1+1

Output_Shape = (124,124,40)

注意:如果未提供,Stride 默认为 1,(124, 124, 40) 中的 40 是用户提供的过滤器数量。

【讨论】:

延伸阅读:en.wikipedia.org/wiki/… 如果计算的大小不是整数怎么办?数字应该如何四舍五入? @asalimih 我刚刚进行了一个小测试,在我的情况下似乎四舍五入。随意创建一个输入形状为 224 的模型并进行复制! @PyWalker2797 afaik 它不是因为在输入平面上完成操作的方式是针对每个通道的,无论输入通道的数量如何。 这应该是一个例外的答案,谢谢@TheBrownBatman【参考方案2】:

您可以通过两种方式找到它: 简单方法:input_size - (filter_size - 1)

W - (K-1)
Here W = Input size
            K = Filter size
            S = Stride
            P = Padding

但是第二种方法是找到输出大小的标准。

Second method: (((W - K + 2P)/S) + 1)
        Here W = Input size
        K = Filter size
        S = Stride
        P = Padding 

【讨论】:

其他读者可以发WolframAlpha computation of this formula快速查看其中一些参数的效果。【参考方案3】:

让我从简单的开始;因为你有输入和过滤器的方阵让我得到一维。然后您可以将相同的方法应用于其他维度。想象一下你在树之间建栅栏,如果有 N 棵树,你必须建 N-1 个栅栏。现在将这个类比应用于卷积层。

您的输出大小将是:输入大小 - 过滤器大小 + 1

因为你的过滤器只能有 n-1 个步骤作为我提到的栅栏。

让我们用这个想法计算你的输出。 128 - 5 + 1 = 124 其他维度也一样。所以现在你有一个 124 x 124 的图像。

这是一个过滤器。

如果你应用这个 40 次,你会得到另一个尺寸:124 x 124 x 40

如果您想了解更多关于高级卷积算法的信息,这里是一个很好的指南:https://arxiv.org/pdf/1603.07285.pdf

【讨论】:

【参考方案4】:

公式n[i]=(n[i-1]−f[i]+2p[i])/s[i]+1

在哪里,

n[i-1]=128

f[i]=5

p[i]=0

s[i]=1

所以,

n[i]=(128-5+0)/1+1 =124

所以输出层的大小为:124x124x40 其中“40”是过滤器的数量

【讨论】:

【参考方案5】:

(124*124*3)*40 = 1845120 宽度 = 124 高度 = 124 深度 = 3 号过滤器 = 40 步幅 = 1 填充 = 0

【讨论】:

以上是关于计算卷积层中的输出大小的主要内容,如果未能解决你的问题,请参考以下文章

卷积核输出特征图大小的计算

卷积层中的偏差真的会对测试精度产生影响吗?

卷积网络输出尺寸计算

卷积的三种模式:fullsamevalid + 卷积输出size的计算

神经网络速记概念解释

计算后图像大小参数计算