卷积神经网络———简单记录卷积与池化 【深度学习|学习记录(卷积神经网络———卷积与池化)】卷积神经网络是深度学习中最经典的模型之一。当今大多数的深度学习经典模型中都能找到卷积神经网络的影子。卷积和池化可以追溯到LeNet-5网络,这是由 Lecun等人于1998年所提出的,其中的卷积与池化操作这一概念,对后来的卷积神经网络的发展影响巨大。
文章图片
它的网络结构主要包括卷积层、池化层和全连接层。
卷积 卷积分为窄卷积、全卷积和同卷积。但是在介绍卷积类别前,我们先了解关于卷积操作的基本概念。
以TensorFlow中的卷积函数为例
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None
其中
- input 为输入图像
- filter 为卷积操作中的卷积核(个人认为和滤波器差不多)
- strides 为卷积过程中每一维的步长
- piddng 定义卷积过程中元素边框与元素内容之间的空间,只能是SAME与VALID中的一个(这个今天不细讲,下次在写)。
- 后面的两个参数分别为是否使用cudnn加速,和名称
卷积核就是一个NxM的矩阵,N和M是自己设定的,一般情况下为是相等的。类似于Sobel算子:
文章图片
但是这里的卷积核里的数值是随机的,然后通过反向传播来改变卷积核的数值,不过这是后面的事了。卷积过程如下
文章图片
其中绿色部分为卷积核,卷积操作是将卷积核对应的图片中的矩阵数据意义相乘,再相加。右边红色为特征图像(feature map),其中第一行第一个元素就是图片块中前3行与3列中的数值与卷积核相乘再相加得到的结果。这里展示的只有一个矩阵图像,彩色图像RGB是三通道,所以这里需要一个三维的卷积核进行卷积操作,然后三个维度相加,也就是说你通道数为多少,卷积核的通道数就为多少,一个卷积核能获取到一个feature map。
2 步长
步长是卷积操作的核心。通过步长的变换,可以得到想要的不同类型的卷积操作。如上图卷积卷积操作图,卷积核在移动时,每一次只移动了一个像素格,且在列方向上移动时,同样只移动了一格,这里的步长就为1。
3卷积后维度大小计算
I为原图维数
M为卷积核维数(MxM矩阵)
F为步长
P为原图边框外圈补0的层数
卷 积 后 图 像 大 小 = ( I ? M ) / F + 1 卷积后图像大小 = (I-M)/F+1 卷积后图像大小=(I?M)/F+1
(这里的图像的长宽相等)向上取整
池化 池化层主要目的是降维,即在保存原油特征的基础上最大限度地将数组的维数变小。池化的操作外表跟卷积很像,只是算法不同。
- 卷积是将对应像素相乘,然后再加到一起。
- 池化关心的只有滤波器的尺寸,而不考虑内部的值。算法是去滤波器映射的区域中的最大值或者平均值。
这个很好理解,就以3*3的大小为例,滤波器所对应的图像中的9个格子所有不为0的像素点去均值。这个得到特征数据会对背景信息更加敏感。
注:一定是不为0的像素点,否则把0像素点带上会增加分母,使得整体数值变低。
2 最大池化
这个就是选取对应区域中像素点最大的值。这个得到的特征数据会对纹理特征信息更加敏感。
文章图片
上图就是采用最大池化,且核为2*2,步长为2。
总结 第一次写博客,打算记录学习路径与回顾曾经学的东西,其中肯定会有许多不足的地方,希望自己能坚持下去,同时如果有错误或者不足的地方希望大家理解、提出!
推荐阅读
- 自然语言处理|活动报名 | 保护儿童,保护未来!智源发布《面向儿童的人工智能北京共识》-2
- NLP|使用GPT-2加载CPM-LM模型实现简单的问答机器人
- 系统入门深度学习,直击算法工程师m
- 算法工程师老潘总结的一些经验
- #yyds干货盘点#PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
- PyTorch|【PyTorch】torch-geometric 安装
- cnn|基于卷积神经网络的人脸识别算法
- cnn|卷积神经网络实现人脸识别微笑检测
- 经验总结|我的论文串讲「一」