【卷积神经网络系列】一、CNN


参考资料

卷积神经网络CNN(卷积池化、感受野、共享权重和偏置、特征图)

理解卷积神经网络CNN中的特征图 feature map

前言

 卷积神经网络CNN(Convolutional Neural Network),是一类深度神经网络,最常用于分析视觉图像。一个卷积神经网络通常包括输入输出层和多个隐藏层,隐藏层通常包括卷积层和RELU层(即激活函数)、池化层、全连接层和归一化层等。

卷积神经网络的核心是:

  • (1)浅层卷积层提取基础特征,比如边缘,轮廓等基础特征。
  • (2)深层卷积层提取抽象特征,比如整个脸型。
  • (3)全连接层根据特征组合进行评分分类。

 传统的模式识别方法如下图所示,通常包含2个部分,第一部分为特征提取模块,第二部分为分类模块。

  • 特征提取模块通常会提取一些基本的特征,与任务是无关的,此模块通常为人工设计的。
  • 分类模块通常是针对任务的并且是可训练的。

传统方法很大程度上依赖人工设计的特征提取模块能否提取到有效的特征,并且对于不同的任务需要重新设计。
在这里插入图片描述


一、CNN的基本结构

1.输入层

 CNN的输入一般是二维向量,可以有高度,比如,RGB图像。

2.卷积层

 卷积层是CNN的核心,层的参数由一组可学习的滤波器(filter)或内核(kernels)组成,它们具有小的感受野,延伸到输入容积的整个深度。卷积层的作用是对输入层进行卷积,提取更高层次的特征。

3.池化层

 池化层(又称下采样),它的作用是减小数据处理量同时保留有用信息(降维),池化层的作用可以描述为模糊图像,丢掉一些不是那么重要的特征。池化层一般包括均值池化、最大池化、高斯池化、可训练池化等。
在这里插入图片描述

4.激活层

 激活层主要是把卷积层输出结果做非线性映射,常用的激励函数有ReLU、sigmoid、tanh、LeakyReLU等。CNN采用的激励函数一般为ReLU(The Rectified Linear Unit,修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱。
在这里插入图片描述

5.全连接层

 全连接层是一个常规的神经网络,它的作用是对经过多次卷积层和多次池化层所得出来的高级特征进行全连接(全连接就是常规神经网络的性质),算出最后的预测值。

6.输出层

 输出层输出对结果的预测值,一般会加一个softmax层。

二、网络特点

CNN主要有三大特色:

  • 局部连接(局部感受野);
  • 权重共享;
  • 时间或空间上的降采样;

1.局部感知(可以提取局部特征)

 局部感知就是我们上面说的感受野,实际上就是卷积核和图像卷积的时候,每次卷积核所覆盖的像素只是一小部分,是局部特征,所以说是局部感知。每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域,然后在更高层,将这些感受不同局部的神经元综合起来就可以得到全局的信息了。CNN是一个从局部到整体的过程(局部到整体的实现是在全连通层),而传统的神经网络是整体的过程。

在这里插入图片描述在这里插入图片描述

2.权重共享(减少参数数量,降低训练难度)

 不同的图像或者同一张图像共用一个卷积核,减少重复的卷积核。同一张图像当中可能会出现相同的特征,共享卷积核能够进一步减少权值参数

3.多卷积核

 一种卷积核代表的是一种特征,为获得更多不同的特征集合,卷积层会有多个卷积核,生成不同的特征。

三、神经元数量、参数(权重)数量、连接数量的计算

1.神经元的数量:

 卷积层和全连接层神经元数量表示方式一样:直接计算当前层FeatureMap的大小,和输入层类似,输出维度(B * C * W * H)=神经元个数;

2.连接数量:

 有多少个连接,就有多少个参数,参考参数数量计算。

3.参数数量:

  • 卷积层参数计算公式=(卷积核高 * 卷积核宽 * 通道数 + 1) * 卷积核个数,1是指偏置bias
  • 全连接层参数计算公式=(上一层神经元个数 + 1) * 当前层神经元个数

四、平均池化、最大池化、全局平均池化

参考链接:一文看尽深度学习中的各种池化方法!


1.Max Pooling(最大池化)

在这里插入图片描述

2.Average Pooling(平均池化)

在这里插入图片描述

3.Global Average Pooling(全局平均池化)

在这里插入图片描述


五、Conv1D、Conv2D、Conv3D的区别

 如果是作用于图像,图像不管通道数为 1 1 1 还是为 3 3 3 ,它都是一个 3 3 3 维的,假设是灰度图 224 × 224 × 1 224\times224\times1 224×224×1 ,它其实也可以看作一个立方体,要用卷积核在它上面滑动,卷积核也得是 3 3 3 维的,比如kernel_size为 3 × 3 3\times3 3×3 的,通道数和图片通道数对应,都是 1 1 1 ,实际上卷积核就是 3 × 3 × 1 3\times3\times1 3×3×1 的,如果要想卷积后得到Feature Map的通道数为 3 3 3 ,那么就需要3个这样的卷积核,所以卷积核实际上也可以看作是 3 × 3 × 3 × 1 3\times3\times3\times1 3×3×3×1也就是说:作用于3维图像时,需要4个维度的卷积核

  • 同理, 如果是作用于 4 4 4 维的视频数据时,需要5维的卷积核(Conv3D);
  • 作用于 2 2 2 维数据时,需要 3 3 3 维的卷积核(Conv1D);
  • Conv1D实际上是一个二维卷积,因为它有一个维度需要和输入数据的一个维度相对应;

参考资料

  PyTorch:学习conv1D,conv2D和conv3D

  神经网络-Conv1D和Conv2D实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

travellerss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值