无法理解卷积神经网络中的滤波器是如何计算的

我已经学习机器学习4个月了,我理解多层感知机(MLP)背后的概念。问题出现在我开始阅读关于卷积神经网络(CNN)的内容时。让我先告诉你我所知道的,然后再问我遇到的问题。

CNN的核心部分包括:

  • 卷积层:你有“n”个滤波器,用来生成“n”个特征图。
  • RELU层:用于归一化卷积层的输出。
  • 子采样层:用于“生成”代表更抽象概念的新特征图。

重复前三层几次,最后部分是一个常见的分类器,比如MLP。

我的疑问如下:

  1. 如何创建卷积层中使用的滤波器?我是需要先创建一个滤波器,训练它,然后放入卷积层,还是直接用反向传播算法来训练它?
  2. 假设我有一个卷积层,里面有3个滤波器,那么它会输出3个特征图。在应用RELU和子采样层后,我仍然会有3个特征图(但更小)。当再次通过卷积层时,我如何计算输出?我是需要在每个特征图上分别应用滤波器,还是对3个特征图进行某种操作然后再求和?我完全不知道如何计算第二个卷积层的输出,以及它会输出多少个特征图。
  3. 如何将卷积层的输出数据传递给MLP(用于神经网络最后部分的分类)?

如果有人知道一个不使用框架的简单CNN实现,我会非常感激。我认为学习事物工作原理的最佳方式是自己动手做。将来,当你已经知道事物是如何工作的,你可以使用框架,因为它们能节省很多时间。


回答:

  1. 你用反向传播算法来训练它,就像训练MLP一样。
  2. 你需要分别应用每个滤波器。例如,如果你在第一层有10个特征图,而第二层的一个特征图的滤波器形状为3*3,那么你要将3*3的滤波器应用到第一层的每个特征图上,每个特征图的权重是不同的,在这种情况下,一个滤波器将有3*3*10个权重。为了更容易理解,记住非灰度图像的一个像素有三个值——红色、绿色和蓝色,所以如果你将图像传递给卷积神经网络,那么在输入层你已经有3个特征图(用于RGB),因此下一层的一个值将连接到第一层的全部3个特征图。以下图像展示了这一点
  3. 你应该将卷积特征图展平,例如,如果你有10个大小为5*5的特征图,那么你将有一个包含250个值的层,然后与MLP没有什么不同,你通过权重将所有这些人工神经元连接到下一层的所有人工神经元。

这里有人实现了不使用框架的卷积神经网络。

我还推荐你观看这些讲座。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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