图解CNN系列二:卷积神经网络各层结构

字数 1171阅读 385

卷积神经网络Convnet用于通过将原始图像通过层转换为类分数来识别图像。 CNN的灵感来自视觉皮层。 每当我们看到某些东西时,一系列神经元被激活,每一层都会检测到一组特征,如线条,边缘。 高层次的层将检测更复杂的特征,以便识别我们所看到的内容。

深度学习CNN模型进行训练和测试,每个输入图像将通过一系列带有滤波器(Kernals),Pooling,全连接层(FC)的卷积层并通过Softmax函数对具有0和1之间的概率值的对象进行分类。 下图是CNN处理输入图像并根据值对对象进行分类的完整流程。

一、输入层(训练数据)

输入图层或输入体积是具有以下尺寸的图像:[宽x高x深]。它是像素值的矩阵。示例:输入:[32x32x3] =>(宽度= 32,高度= 32,深度= 3)此处的深度表示R,G,B通道。

输入层应该可以被2整除多次。 常用数字包括32,64,96,224,384和512。

二、卷积层

卷积是从输入图像中提取特征的第一层,Conv层的目标是提取输入数据的特征。 卷积通过使用小方块输入数据学习图像特征来保持像素之间的关系。

具有不同滤波器的图像的卷积可以通过应用滤波器来执行诸如边缘检测,模糊和锐化的操作。下面的示例显示了应用不同类型的过滤器(内核)后的各种卷积图像。

三、Stride

Stride是输入矩阵上的像素移位数。当步幅为1时,我们将滤波器移动到1个像素。当步幅为2时,我们一次将滤镜移动到2个像素,依此类推,下图显示卷积将以2的步幅工作。

四、Padding(填充)

有时滤镜不适合输入图像。 我们有两种选择:

1、用零填充图片(零填充)以使其适合

2、删除滤镜不适合的图像部分。

这称为有效填充,仅保留图像的有效部分。

五、激活函数(ReLu)

ReLU代表整流线性单元,用于非线性操作。 输出是ƒ(x) = max(0,x).

为什么ReLU很重要:ReLU的目的是在我们的ConvNet中引入非线性。因为,现实世界数据希望我们的ConvNet学习是非负线性值。

还可以使用其他非线性函数,例如tanh或sigmoid代替ReLU。大多数数据科学家使用ReLU,因为ReLU的性能明显比其他两个更好。

六、池化层

池化层部分将减少图像太大时的参数数量。空间池化也称为子采样或下采样,它降低了每个图片映射的维度,但保留了重要信息。空间池化可以是不同类型的:

1、最大池化

2、平均池化

3、总和池化

七、全连接层

我们称之为FC层,我们将矩阵展平为矢量并将其馈入神经网络的全连接层。

在上图中,特征映射矩阵将被转换为矢量(x1,x2,x3,...)。 通过全连接层,我们将这些功能组合在一起以创建模型。 最后我们通过一个激活功能,如softmax或sigmoid,将输出分类为猫,狗,汽车,卡车等,

总结

1、将输入图像提供到卷积层

2、选择参数,可通过应用strides、Pooling和滤波器。对图像执行卷积并将ReLU激活应用于矩阵。

3、执行池化以减少维度大小

4、添加尽可能多的卷积层直到满意为止

5、压平输出并馈入全连接层(FC层)

6、使用激活函数(带成本函数的Logistic回归)输出类并对图像进行分类。

个人微信公众号:python练手项目实战

更多机器学习算法的学习欢迎关注我的个人公众号,里面有更多机器学习与深度学习的文章,希望能和更多学习机器学习的伙伴相互交流和成长。

推荐阅读更多精彩内容