我已经学习了机器学习4个月,我理解MLP背后的概念。然而,当我开始阅读卷积神经网络方面的内容时,问题就来了。让我先告诉你我所知道的,然后再问我的困惑。
CNN的核心部分包括:
- 卷积层:使用“n”个滤波器生成“n”个特征映射。 - RELU层:用于规范化卷积层的输出。 - 池化层:用于生成表示更抽象概念的新特征映射。
重复前3个层数次,最后一部分是常见分类器,如MLP。
我的疑问如下:
1. 如何创建在卷积层中使用的滤波器?我需要创建一个滤波器,对其进行训练,然后将其放入Conv层中,还是使用反向传播算法进行训练? 2. 假设我有一个有3个过滤器的卷积层,那么它将输出3个特征映射。经过RELU和池化层处理后,我仍然拥有3个特征映射(较小的)。当再次通过Conv层时,如何计算输出?我必须在每个特征图上分别应用滤波器,还是在3个特征映射上执行某种操作,然后求和?我不知道如何计算第二个Conv层的输出以及它将输出多少个特征映射。 3. 如何将数据从Conv层传递到MLP(用于NN的最后分类)?
如果有人知道一个简单的CNN实现而不使用框架,我会很感激。我认为学习东西最好的方式是自己去做。在你已经知道东西如何工作时,可以使用框架,因为它们可以节省很多时间。
CNN的核心部分包括:
- 卷积层:使用“n”个滤波器生成“n”个特征映射。 - RELU层:用于规范化卷积层的输出。 - 池化层:用于生成表示更抽象概念的新特征映射。
重复前3个层数次,最后一部分是常见分类器,如MLP。
我的疑问如下:
1. 如何创建在卷积层中使用的滤波器?我需要创建一个滤波器,对其进行训练,然后将其放入Conv层中,还是使用反向传播算法进行训练? 2. 假设我有一个有3个过滤器的卷积层,那么它将输出3个特征映射。经过RELU和池化层处理后,我仍然拥有3个特征映射(较小的)。当再次通过Conv层时,如何计算输出?我必须在每个特征图上分别应用滤波器,还是在3个特征映射上执行某种操作,然后求和?我不知道如何计算第二个Conv层的输出以及它将输出多少个特征映射。 3. 如何将数据从Conv层传递到MLP(用于NN的最后分类)?
如果有人知道一个简单的CNN实现而不使用框架,我会很感激。我认为学习东西最好的方式是自己去做。在你已经知道东西如何工作时,可以使用框架,因为它们可以节省很多时间。