我目前正在看theano的API,
theano.tensor.nnet.conv2d(input, filters, input_shape=None, filter_shape=None, border_mode='valid', subsample=(1, 1), filter_flip=True, image_shape=None, **kwargs)
filter_shape
是(num_filter, num_channel, height, width)
的元组,我对此感到困惑,因为在图像上滑动过滤器窗口时,不是由步幅决定的过滤器数量?我怎样才能像这样指定过滤器编号?如果它是由参数stride计算的(如果有的话),那对我来说是合理的。
另外,我也对术语特征映射感到困惑,它是每层的神经元吗?批量大小怎么样?它们如何相关?
答案 0 :(得分:47)
滤波器的数量是神经元的数量,因为每个神经元对层的输入执行不同的卷积(更准确地说,神经元和输入权重形成卷积核)。
要素图是应用过滤器的结果(因此,您拥有与过滤器一样多的要素图),其大小是过滤器和步幅的窗口/内核大小的结果。
下面的图片是我能找到的最好的解释这个概念的高级别: 请注意,2个不同的卷积滤波器应用于输入图像,从而产生2个不同的特征图(滤波器的输出)。每个特征图的每个像素都是卷积层的输出。
例如,如果您有28x28输入图像和带有20个7x7滤镜和步幅1的卷积层,您将在此图层的输出处获得20个22x22特征贴图。请注意,这将作为宽度=高度= 22且深度= num_channels = 20的卷呈现给下一层。您可以使用相同的表示来训练您的CNN上的RGB图像,例如来自CIFAR10数据集的图像,这将是32x32x3卷(卷积仅应用于2个空间维度)。
答案 1 :(得分:0)
过滤器的数量是可以调整的超参数。卷积层中神经元的数量等于该层输出的大小。对于图片,则是要素地图的大小。
答案 2 :(得分:0)
关于最佳过滤器数没有正确答案。这在很大程度上取决于(图像)数据的类型和复杂性。在一段时间内反复使用相似类型的数据集后,可以从经验中学习适当数量的功能。通常,图像中要捕获(并且可能可用)的功能越多,CNN中所需的滤镜数量就越大。