计算卷积层中的输出大小
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
。
所以,我们输入公式:
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
【讨论】:
以上是关于计算卷积层中的输出大小的主要内容,如果未能解决你的问题,请参考以下文章