卷积神经网络学习记录
目录
神经网络基础定义:
基本组成部分
工作流程
卷积层(卷积定义)【CONV】:
卷积层(Convolutional Layer)
特征提取:卷积层的主要作用是通过卷积核(或滤波器)运算提取输入数据(如图像)中的特征。编辑
卷积核:卷积层由多个卷积核组成,每个卷积核负责检测输入数据中的特定特征。编辑
局部连接:与全连接层不同,卷积层中的神经元只与输入数据的一个局部区域相连接,这个局部区域对应于卷积核的大小。
共享权重:卷积层中的卷积核在整个输入数据上滑动时,使用的是相同的权重(即卷积核的值),这意味着网络可以学习到在整个输入数据中通用的特征。编辑
稀疏连接:由于局部连接的特性,卷积层的连接数远少于全连接层,这使得卷积层在参数数量上更加稀疏,有助于减少计算量和过拟合的风险。
步长和填充:卷积操作可以通过调整步长(stride)和填充(padding)来控制输出特征图的大小。编辑左上角+pad 1:边缘填充全为0的数一圈 生成一个7*7的长度与宽度的输入数据编辑
输出特征图:每个卷积核都会生成一个特征图(Feature Map),表示输入数据在该卷积核下的特征响应。一个卷积层可以有多个卷积核,因此会产生多个特征图。编辑编辑编辑
激活函数:卷积操作后通常会跟一个非线性激活函数,如ReLU,以引入非线性,使网络能够学习更复杂的特征关系。编辑如红色矩阵框最下面的,Bias b0的置是1,计算过程中要加上这个1,这个就是激活函数,偏置函数
多通道和多特征图:在处理彩色图像时,输入数据可能有多个通道,每个卷积核可以独立地在每个通道上操作,然后将结果相加,以生成特征图。
卷积操作:在神经网络中,卷积操作可以定义为将卷积核与输入数据的局部区域进行元素乘积后求和,这个过程在输入数据的每个位置重复进行,直到覆盖整个输入数据
重要参数:
卷积核(Convolutional Kernel)
特征图(Feature Map)
步长(Stride)
填充(Padding)
卷积操作
多通道和多特征图
激活函数
池化层(POOL):
最大池化(Max Pooling)
平均池化(Average Pooling)
求和池化(Sum Pooling)
全局池化(Global Pooling)
空间金字塔池化(Spatial Pyramid Pooling)
自适应池化(Adaptive Pooling)
全连接层(FC):
几层神经网络如何计算:
软件下载:
Anaconda与pytorch下载:
神经网络基础定义:
神经网络是一种模仿人脑神经元处理和传递信息方式的计算模型,它由大量的节点(或称为“神经元”)组成,这些节点通常被组织成层。神经网络通过学习输入数据之间的复杂关系和模式来执行任务,如分类、识别、预测等。
基本组成部分
- 神经元(Neurons):神经网络的基本单元,负责处理信息。
- 层(Layers):神经元被组织成层,包括输入层、隐藏层和输出层。
- 连接(Connections):神经元之间的连接,它们决定了信息如何在网络中流动。
- 权重(Weights):连接的强度,决定了输入对输出的影响程度。
- 偏置(Biases):加在神经元输入上的常数,用于调整激活函数的输出。
- 激活函数(Activation Functions):决定一个神经元是否应该被激活的函数,常见的有Sigmoid、ReLU等。
工作流程
- 前向传播(Forward Propagation):输入数据通过网络,每层神经元计算其输出并传递给下一层。
- 损失函数(Loss Function):衡量模型预测与实际结果之间的差异。
- 反向传播(Backpropagation):根据损失函数计算的梯度,通过网络反向传播,更新权重和偏置。
- 优化算法(Optimization Algorithms):如梯度下降,用于更新权重和偏置以最小化损失函数。
卷积层(卷积定义)【CONV】:
在神经网络中,特别是在卷积神经网络(Convolutional Neural Networks, CNNs)中,卷积是一种数学运算,用于提取输入数据(通常是图像)的特征。以下是神经网络中卷积的定义和关键概念:
卷积层(Convolutional Layer)
卷积层是CNN中的基本构建块,它使用卷积运算来处理输入数据。每个卷积层由多个卷积核(或滤波器)组成,每个卷积核负责检测输入数据中的特定特征。
-
特征提取:卷积层的主要作用是通过卷积核(或滤波器)运算提取输入数据(如图像)中的特征。
-
卷积核:卷积层由多个卷积核组成,每个卷积核负责检测输入数据中的特定特征。
-
局部连接:与全连接层不同,卷积层中的神经元只与输入数据的一个局部区域相连接,这个局部区域对应于卷积核的大小。
-
共享权重:卷积层中的卷积核在整个输入数据上滑动时,使用的是相同的权重(即卷积核的值),这意味着网络可以学习到在整个输入数据中通用的特征。
-
稀疏连接:由于局部连接的特性,卷积层的连接数远少于全连接层,这使得卷积层在参数数量上更加稀疏,有助于减少计算量和过拟合的风险。
-
步长和填充:卷积操作可以通过调整步长(stride)和填充(padding)来控制输出特征图的大小。左上角+pad 1:边缘填充全为0的数一圈 生成一个7*7的长度与宽度的输入数据
-
输出特征图:每个卷积核都会生成一个特征图(Feature Map),表示输入数据在该卷积核下的特征响应。一个卷积层可以有多个卷积核,因此会产生多个特征图。
-
激活函数:卷积操作后通常会跟一个非线性激活函数,如ReLU,以引入非线性,使网络能够学习更复杂的特征关系。如红色矩阵框最下面的,Bias b0的置是1,计算过程中要加上这个1,这个就是激活函数,偏置函数
-
多通道和多特征图:在处理彩色图像时,输入数据可能有多个通道,每个卷积核可以独立地在每个通道上操作,然后将结果相加,以生成特征图。
-
卷积操作:在神经网络中,卷积操作可以定义为将卷积核与输入数据的局部区域进行元素乘积后求和,这个过程在输入数据的每个位置重复进行,直到覆盖整个输入数据
重要参数:
1.输入图像宽度,长度,深度(w,h,c)
2.有多少个不同的卷积核(filter)
3.步长(每次横向,纵向移动的长度)
4.边界填充(边界填充的数值都为0)
5.激活函数(偏置函数)
卷积核(Convolutional Kernel)
卷积核是一个小型的矩阵(通常为正方形),它在输入数据上滑动(或卷积),并在每个位置计算卷积核与输入数据的元素乘积之和。这个操作会产生一个新的二维数组,称为特征图(Feature Map)。
特征图(Feature Map)
特征图是卷积操作的输出,它代表了输入数据在特定卷积核下的特征。每个卷积核都会产生一个特征图,而一个卷积层可以有多个卷积核,因此会产生多个特征图。
步长(Stride)
步长定义了卷积核在输入数据上滑动的间隔。如果步长为1,卷积核会在每个像素上滑动;如果步长大于1,卷积核会在每隔一个像素上滑动。
填充(Padding)
填充是在输入数据的边缘添加额外的像素,以控制输出特征图的大小。填充可以是零填充(Zero Padding),即添加零值像素,或者可以是反射填充(Reflect Padding),即添加输入数据的边缘像素的反射。
卷积操作
在神经网络中,卷积操作可以定义为:
- 定义卷积核:选择一个小型矩阵(卷积核),用于检测输入数据中的特定特征。
- 滑动窗口:将卷积核作为滑动窗口在输入数据上移动。
- 元素乘积:在每个位置,计算卷积核与输入数据的元素对应位置的乘积。
- 求和:将上一步得到的乘积求和,得到一个单一的数值。
- 生成特征图:重复上述步骤,直到覆盖整个输入数据,生成一个新的二维数组(特征图)。
多通道和多特征图
在处理彩色图像时,输入数据可能有多个通道(如RGB)。每个卷积核可以独立地在每个通道上操作,然后将结果相加,以生成特征图。此外,一个卷积层可以有多个卷积核,每个卷积核生成一个特征图,从而产生多个特征图。
激活函数
在卷积操作之后,通常会应用一个非线性激活函数(如ReLU),以引入非线性,使网络能够学习更复杂的特征。
卷积神经网络通过堆叠多个卷积层、池化层(Pooling Layers)和全连接层(Fully Connected Layers)来构建,以实现对输入数据的深度特征提取和分类。
池化层(POOL):
池化(Pooling)是卷积神经网络(CNN)中的一种操作,它通常跟在卷积层之后,用于降低特征图的空间维度,同时保留重要的特征信息。池化操作有助于减少模型的参数数量和计算量,同时也增加了模型的抽象能力,使其对输入数据的微小变化更加鲁棒。以下是池化的几种常见类型:
最大池化(Max Pooling)
用的最多
最大池化是最常见的池化类型。在最大池化中,每个池化窗口(通常为2x2或3x3)覆盖输入特征图的一个区域,然后输出该区域内的最大值。这种操作可以有效地保留最显著的特征,同时减少特征图的尺寸。
平均池化(Average Pooling)
平均池化与最大池化类似,但它输出的是池化窗口内所有元素的平均值。平均池化可以平滑特征图,减少噪声的影响。
求和池化(Sum Pooling)
求和池化输出的是池化窗口内所有元素的总和。这种池化方式不如最大池化和平均池化常见。
全局池化(Global Pooling)
全局池化是一种特殊的池化操作,它将整个特征图作为一个池化窗口。全局最大池化和全局平均池化分别输出整个特征图中的最大值和平均值。全局池化常用于网络的末端,以减少特征图的尺寸,为全连接层做准备。
空间金字塔池化(Spatial Pyramid Pooling)
空间金字塔池化是一种多尺度的池化方法,它将不同尺度的特征图组合起来,以捕获不同尺度的特征信息。
自适应池化(Adaptive Pooling)
自适应池化可以根据输出特征图的期望尺寸动态调整池化窗口的大小,以确保输出特征图的尺寸是固定的。
池化操作的参数通常包括:
- 窗口大小(Window Size):池化窗口的尺寸,决定了每个池化操作覆盖的输入特征图区域的大小。
- 步长(Stride):池化窗口在输入特征图上滑动的间隔。如果步长等于窗口大小,池化操作不会重叠;如果步长小于窗口大小,池化操作会重叠。
全连接层(FC):
-
定义: 全连接层是神经网络的一种基本层类型,通常位于网络的最后几层,用于分类任务的输出层。在全连接层中,每一个神经元与前一层的每一个神经元都相连接,这意味着每个输入都影响每个输出。
-
基本结构: 全连接层由输入层、隐藏层和输出层组成。输入层接收原始数据,隐藏层进行特征提取和非线性变换,输出层产生最终的分类或回归结果。
-
参数详解:
- 权重参数:全连接层中的每个连接都有一个对应的权重参数,这些权重在训练过程中学习得到。
- 偏置参数:每个神经元都有一个偏置项,用于调整神经元的激活值。
-
计算方式: 全连接层的核心操作是矩阵向量乘积,即 y=Wx+by=Wx+b,其中 yy 为输出向量,WW 为权重矩阵,xx 为输入向量,bb 为偏置向量。
-
作用:
- 全连接层在整个网络中起到“分类器”的作用,将卷积层、池化层和激活函数等操作映射到的隐层特征空间,进一步映射到样本标记空间。
- 在分类任务中,全连接层通常作为网络的最后一层,直接将全连接层的维度设为类别数量或通过Softmax函数输出每个类别的概率分布,从而实现对输入数据的分类
几层神经网络如何计算:
CONV(Convolutional Layer) - 卷积层:
- 卷积层是CNN中用于提取输入数据特征的层。它包含多个卷积核(或滤波器),每个卷积核在输入数据上滑动(卷积操作),并在每个位置计算卷积核与输入数据的元素乘积之和,生成新的特征图。
- 卷积层能够捕捉输入数据的局部特征,如边缘、纹理等,并且通过共享权重减少模型参数。
ReLU(Rectified Linear Unit) - 修正线性单元:
- ReLU是一种常用的激活函数,定义为 f(x)=max(0,x)f(x)=max(0,x),即当输入x小于0时输出0,大于0时输出x本身。
- ReLU能够引入非线性到模型中,使得网络能够学习复杂的函数映射,同时它也有助于缓解梯度消失问题,加快训练速度。
POOL(Pooling Layer) - 池化层:
- 池化层用于降低特征图的空间维度,减少参数数量和计算量,同时提取重要特征。
- 常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。最大池化输出池化窗口内的最大值,而平均池化输出池化窗口内的平均值。
FC(Fully Connected Layer) - 全连接层:
- 全连接层是神经网络中的一种层,其中每个神经元都与前一层的所有神经元相连。
- 在CNN中,全连接层通常位于网络的末端,用于整合卷积层和池化层提取的特征,进行最终的分类或回归任务。
- 全连接层的每个神经元对输入特征进行加权求和,并通过激活函数(如ReLU或Softmax)生成输出
只有CONV,FC算作神经网络层数,RELU,POOL不算
软件下载:
Anaconda与pytorch下载:
PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】_哔哩哔哩_bilibili
pytorch下载时用清华镜像:Anaconda之conda换国内清华源,切换官方与国内源【Anaconda为24版】_哔哩哔哩_bilibili
清华源:BY UP主:Galaxfy(这部分内容为这个up主的,有视频教程)
Step1:生成.condarc文件
conda config --set show_channel_urls yesStep2:使用everything找到.condarc文件
强烈推荐下载使用everything进行检索,超级快!!
默认位置:C:\Users\<YourUserName>\.condarcStep3:复制下列清华源到.condarc文件
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
show_channel_urls: trueStep4:查看是否添加成功
conda infoStep5:清除旧索引的干扰
conda clean -i其他:还原默认官方源
清空.condarc内的内容
pytorch下载:PyTorch
教程链接:
Pytorch下载安装并运行测试【Windows,Anaconda虚拟环境下】_哔哩哔哩_bilibili