卷积神经网络(CNN)架构
卷积神经网络由多层组成,如输入层、卷积层、池化层和全连接层。
卷积层对输入图像应用滤波器以提取特征,池层对图像进行下采样以减少计算,全连接层进行最终预测。网络通过反向传播和梯度下降来学习最优滤波器。
卷积层的工作原理
卷积神经网络或covnets是共享其参数的神经网络。想象一下你有一个图像。它可以表示为具有其长度、宽度(图像的尺寸)和高度的长方体(即,作为图像的通道通常具有红色、绿色和蓝色通道)。
现在想象一下,取这张图像的一小块,运行一个小的神经网络,称为滤波器或内核,有K个输出,并垂直表示它们。现在将神经网络滑动到整个图像上,结果,我们将获得另一张具有不同宽度、高度和深度的图像。现在我们有更多的通道,但宽度和高度较小,而不仅仅是R、G和B通道。此操作称为卷积。如果补丁大小与图像的大小相同,则它将是一个规则的神经网络。因为这个小补丁,我们的权重更少。
现在让我们来谈谈整个卷积过程中涉及的一些数学问题。
- 卷积层由一组可学习滤波器(或核)组成,这些滤波器具有较小的宽度和高度,并且与输入体积的深度相同(如果输入层是图像输入,则为3)。
- 例如,如果我们必须对尺寸为34x34x3的图像进行卷积。过滤器的可能大小可以是axax3,其中“a”可以是3、5或7,但与图像尺寸相比更小。
- 在前向传递过程中,我们一步一步地在整个输入体积上滑动每个滤波器,其中每个步骤被称为步长(对于高维图像,其值可以为2、3甚至4),并根据输入体积计算内核权重和补丁之间的点积。
- 当我们滑动滤波器时,我们将获得每个滤波器的2-D输出,并将它们堆叠在一起,因此,我们将得到深度等于滤波器数量的输出体积。网络将学习所有过滤器。
用于构建ConvNets的层
一个完整的卷积神经网络体系结构也称为ConvNets。ConvNets是一个层序列,每一层通过可微函数将一个体积转换为另一个体积。
图层类型:数据集datasets
让我们举一个例子,在尺寸为32 x 32 x 3的图像上运行ConvNets。
- 输入层Input Layer:这是我们为模型提供输入的层。在CNN中,通常,输入将是一幅图像或一系列图像。该层保存具有宽度32、高度32和深度3的图像的原始输入。
- 卷积层Convolutional Layer:这是一个层,用于从输入数据集中提取特征。它将一组称为内核的可学习滤波器应用于输入图像。滤波器/核是较小的矩阵,通常是2×2、3×3或5×5的形状。它在输入图像数据上滑动,并计算核权重和相应的输入图像块之间的点积。该层的输出被称为广告特征图。假设我们为这个层总共使用12个过滤器,我们将获得尺寸为32 x 32 x 12的输出体积。
- 激活层Activation Layer:通过向前一层的输出添加激活函数,激活层将非线性添加到网络中。它将向卷积层的输出应用逐元素激活函数。一些常见的激活函数是RELU:max(0,x)、Tanh、Leaky RELU等。音量保持不变,因此输出音量的尺寸为32 x 32 x 12。
- 池层Pooling layer:该层周期性地插入到covnets中,其主要功能是减小体积大小,这使得计算快速,减少了内存,也防止了过拟合。两种常见的池化层类型是最大池化和平均池化。如果我们使用带有2 x 2个过滤器和步长2的最大池,则生成的体积将为16x16x12。
- 平坦化Flattening:在卷积和池化层之后,将生成的特征图平坦化为一维向量,以便将它们传递到完全链接的层中进行分类或回归。
- 完全连接层Fully Connected Layer:它从上一层获取输入,并计算最终的分类或回归任务。
- 输出层Output Layer:然后将完全连接层的输出输入到用于分类任务的逻辑函数中,如sigmoid或softmax,该函数将每个类别的输出转换为每个类别的概率得分。
举例
让我们考虑一个图像,并应用卷积层、激活层和池化层操作来提取内部特征。
输入图像:
步骤:
- 导入必要的库
- 设置参数
- 定义内核
- 加载图像并进行打印
- 重新格式化图像
- 应用卷积层运算并绘制输出图像
- 应用激活层操作并绘制输出图像
- 应用池化层操作并绘制输出图像
输出: