CNN基础——卷积神经网络的组成

简介: CNN基础——卷积神经网络的组成

以图像分类任务为例,在下表所示卷积神经网络中,一般包含5种类型的网络层次结构:


CNN层次结构 输出尺寸 作用

输入层

W1×H1×3


卷积网络的原始输入,可以是原始或预处理后的像素矩阵

卷积层 W1×H1×K 参数共享、局部连接,利用平移不变性从全局特征图提取局部特征

激活层 W1×H1×K 将卷积层的输出结果进行非线性映射

池化层 W2×H2×K 进一步筛选特征,可以有效减少后续网络层次所需的参数量

全连接层 (W2  H2  K)× C 将多维特征展平为2维特征,通常低维度特征对应任务的学习目标(类别或回归值)

W1×H1×3对应原始图像或经过预处理的像素值矩阵,3对应RGB图像的通道;K表示卷积层中卷积核(滤波器)的个数;W2× H2 为池化后特征图的尺度,在全局池化中尺度对应1×1;(W2H2K)是将多维特征压缩到1维之后的大小,C对应的则是图像类别个数。


1 输入层

输入层(Input Layer)通常是输入卷积神经网络的原始数据或经过预处理的数据,可以是图像识别领域中原始三维的多彩图像,也可以是音频识别领域中经过傅利叶变换的二维波形数据,甚至是自然语言处理中一维表示的句子向量。以图像分类任务为例,输入层输入的图像一般包含RGB三个通道,是一个由长宽分别为H和W组成的3维像素值矩阵H× W ×3,卷积网络会将输入层的数据传递到一系列卷积、池化等操作进行特征提取和转化,最终由全连接层对特征进行汇总和结果输出。根据计算能力、存储大小和模型结构的不同,卷积神经网络每次可以批量处理的图像个数不尽相同,若指定输入层接收到的图像个数为N,则输入层的输出数据为N×H×W×3。


2 卷积层

卷积层(Convolution Layer)通常用作对输入层输入数据进行特征提取,通过卷积核矩阵对原始数据中隐含关联性的一种抽象。卷积操作原理上其实是对两张像素矩阵进行点乘求和的数学操作,其中一个矩阵为输入的数据矩阵,另一个矩阵则为卷积核(滤波器或特征矩阵),求得的结果表示为原始图像中提取的特定局部特征。下图表示卷积操作过程中的不同填充策略,上半部分采用零填充,下半部分采用有效卷积(舍弃不能完整运算的边缘部分)。  

tt.png




卷积神将网络的计算公式为:

N=(W-F+2P)/S+1

其中N:输出大小

W:输入大小

F:卷积核大小

P:填充值的大小

S:步长大小

举例:


nn.Conv2d(in_channels=3,out_channels=96,kernel_size=12,stride=4,padding=2)

in_channels=3:表示的是输入的通道数,由于是RGB型的,所以通道数是3.

out_channels=96:表示的是输出的通道数,设定输出通道数的96(这个是可以根据自己的需要来设置的)

kernel_size=12:表示卷积核的大小是12x12的,也就是上面的 “F”, F=12

stride=4:表示的是步长为4,也就是上面的S, S=4

padding=2:表示的是填充值的大小为2,也就是上面的P, P=2


假如你的图像的输入size是256x256的,由计算公式知N=(256-12+2x2)/4+1=63,也就是输出size为63x63x96


卷积层的参数计算:

卷积后feature map边长: outputSize =(originalSize + paddingX2 - kernelSize)/ stride + 1 (其中outputSize是卷积之后得到的feature map的边长,originalSize是输入图的边长,padding是填充的大小,kernelSize是卷积核的边长,stride是步长)

卷积层的可训练的参数个数: trainNum = (outputSize X outputSize + 1) X kernelNum (其中kernelNum是卷积核的个数,加1是因为每一个卷积核有一个bias参数)

卷积层的连接数: connectNum = (kernelSize X kernelSize) X (outputSize X outputSize) X kernelNum

卷积层的神经元个数: neuralNum = (outputSzie X outputSize) X kernelNum


3 激活层

激活层(Activation Layer)负责对卷积层抽取的特征进行激活,由于卷积操作是由输入矩阵与卷积核矩阵进行相差的线性变化关系,需要激活层对其进行非线性的映射。激活层主要由激活函数组成,即在卷积层输出结果的基础上嵌套一个非线性函数,让输出的特征图具有非线性关系。卷积网络中通常采用ReLU来充当激活函数(还包括tanh和sigmoid等)ReLU的函数形式如下公式所示,能够限制小于0的值为0,同时大于等于0的值保持不变。

tt.png





4 池化层

池化层又称为降采样层(Downsampling Layer),作用是对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出特征尺度,进而减少模型所需要的参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling),它们分别提取感受域内最大、平均与总和的特征值作为输出,最常用的是最大池化。

tt.png




池化操作没有用于训练的参数,只有两个超参数Stride和kernel_size,过程与卷积操作类似,也是在输入图像上从左到右从上到下滑动,在滑动过程中,当核覆盖在一个区域的时候,用这个区域的最大值作为结果,Stride和kernel_size一般来说相等。


下采样层的参数计算:

下采样后map的边长: outputSize =(originalSize + paddingX2 - kernelSize)/ stride + 1 (其中outputSize是卷积之后得到的feature map的边长,originalSize是输入图的边长,padding是填充的大小,kernelSize是卷积核的边长,stride是步长)

下采样层可训练的参数个数: trainNum = (1+ 1) X kernelNum (其中kernelNum是卷积核的个数)

下采样层的连接数: connectNum = (kernelSize X kernelSize) X (outputSize X outputSize) X kernelNum

下采样层的神经元个数: neuralNum = (outputSzie X outputSize) X kernelNum


5 全连接层

全连接层(Full Connected Layer)负责对卷积神经网络学习提取到的特征进行汇总,将多维的特征输入映射为二维的特征输出,高维表示样本批次,低位常常对应任务目标。


目录
相关文章
|
1天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
87 55
|
11天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
77 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
15天前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
37 3
图卷积网络入门:数学基础与架构设计
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
14天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-GRU网络的数据分类识别算法matlab仿真
本项目展示了使用MATLAB2022a实现的贝叶斯优化、CNN和GRU算法优化效果。优化前后对比显著,完整代码附带中文注释及操作视频。贝叶斯优化适用于黑盒函数,CNN用于时间序列特征提取,GRU改进了RNN的长序列处理能力。
|
18天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
21 1
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
|
1月前
|
机器学习/深度学习 计算机视觉 网络架构
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
纵观近年的顶会论文和研究热点,我们不得不承认一个现实:CNN相关的研究论文正在减少,曾经的"主角"似乎正逐渐淡出研究者的视野。
78 11
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
64 7
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
本文旨在通过深入浅出的方式,为读者揭示卷积神经网络(CNN)的神秘面纱,并展示其在图像识别领域的实际应用。我们将从CNN的基本概念出发,逐步深入到网络结构、工作原理以及训练过程,最后通过一个实际的代码示例,带领读者体验CNN的强大功能。无论你是深度学习的初学者,还是希望进一步了解CNN的专业人士,这篇文章都将为你提供有价值的信息和启发。

热门文章

最新文章