CNN中的滤波器数量是多少?

我目前正在查看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)。我对此感到困惑,因为滤波器的数量不是由在图像上滑动滤波器窗口时的步长决定的吗?怎么能像这样直接指定滤波器数量呢?如果是通过步长参数(如果有的话)计算出来,我觉得这才合理。

另外,我对术语“特征图”也感到困惑,它是每一层的神经元吗?批次大小又如何?它们之间是如何关联的?


回答:

滤波器的数量就是神经元的数量,因为每个神经元对层的输入执行不同的卷积操作(更准确地说,神经元的输入权重形成卷积核)。

特征图是应用滤波器的结果(因此,你有多少个滤波器就有多少个特征图),其大小取决于你的滤波器的窗口/核大小和步长。

以下图片是我找到的最能解释这一概念的图片:enter image description here请注意,2个不同的卷积滤波器被应用到输入图像上,产生了2个不同的特征图(滤波器的输出)。每个特征图的每个像素都是卷积层的输出。

例如,如果你有28×28的输入图像和一个包含20个7×7滤波器且步长为1的卷积层,你将在该层的输出处得到20个22×22的特征图。请注意,这将以宽度=高度=22和深度=通道数=20的体积形式呈现给下一层。你可以使用相同的表示来训练你的CNN处理RGB图像,例如来自CIFAR10数据集的图像,这些图像将是32x32x3的体积(卷积仅应用于2个空间维度)。

编辑:评论中似乎有一些混淆,我希望能澄清一下。首先,没有神经元。神经元只是神经网络中的一个比喻。因此,“卷积层中有多少个神经元”这个问题无法客观回答,而是取决于你对层执行的计算的看法。在我的看法中,一个滤波器是一个单一的神经元,它扫过图像,为每个位置提供不同的激活。在我看来,一个完整的特征图是由单个神经元/滤波器在多个位置产生的。评论者似乎有另一种看法,这种看法与我的看法同样有效。他们将每个滤波器视为卷积操作的一组权重,每个图像中关注的位置都有一个神经元,所有这些神经元共享由滤波器定义的相同权重集。请注意,这两种看法在功能上(甚至在根本上)是相同的,因为它们使用相同的参数、计算,并产生相同的结果。因此,这不是一个问题。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注