【问题标题】:How to calculate third element of caffe convnet?如何计算 caffe convnet 的第三个元素?
【发布时间】:2017-11-12 20:54:38
【问题描述】:
按照this 问题和这个tutorial 我已经创建了一个简单的网络,就像教程一样,但有 100X100 图像和 11X11 的第一个卷积核和 pad=0。
我知道公式是:(W−F+2P)/S+1,在我的情况下,尺寸变为 [51X51X3](3 是 rgb 的通道)但数字 96 弹出我的网络图和 tutorial 说它是输出的第三维,另一方面,我的网络在第一次转换后变成了 [51X51X96]。我不知道 96 是如何计算的以及为什么。
网络卷积层是不是假设通过丢三色通道,输出应该是三张特征图?它的维度怎么会长成这样?不是每个通道都有一个内核吗?这个内核如何创建 96 个(或在第一个教程中为 256 或 384 个)特征图?
【问题讨论】:
标签:
neural-network
deep-learning
caffe
conv-neural-network
convolution
【解决方案1】:
您正在混合输入通道和输出通道。
您的输入图像具有三个通道:R、G 和 B。conv 层中的每个过滤器都作用于这三个通道及其空间内核大小(例如,3×3)。每个过滤器在每个空间位置输出一个单个数字。因此,如果您的图层中有一个过滤器,那么您的输出将只有一个输出通道(!)
通常,您希望在每一层计算多个过滤器,这就是 num_output 参数在 convolution_param 中的用途:它允许您定义将在特定卷积层中训练多少个过滤器。
因此一个Conv层
layer {
type: "Convolution"
name: "my_conv"
bottom: "x" # shape 3-by-100-by-100
top: "y"
convolution_param {
num_output: 32 # number of filters = number of output channels
kernel_size: 3
}
}
将输出"y",形状为32-by-98-by-98。