C:即channel,通道的意思,在卷积神经网络(CNN)中:输入层中的通道对应于图像的通道,例如 RGB 图像的三个颜色通道。隐藏层中的通道代表卷积核的数量,每个卷积核在特征图中产生一个通道,捕捉图像的不同特征。
W:weight,宽度
H:high,高度,一个通道中有w乘h个元素
convolution:卷积层,在图像识别任务中,CNN通过一系列卷积层和池化层来提取图像的特征,然后通过全连接层或其他类型的层来进行分类。
subsampling:下采样,使用下采样不改变通道数,目的是减少数据量,降低运算的需求
池化层:池化层是下采样在卷积神经网络中的一种具体实现。池化层通过在特征图上滑动窗口并执行某种聚合操作(如最大值、平均值或总和),来减少特征图的尺寸,同时保留重要的特征信息。
fully connected:全连接,在全连接层中,每一层的每个神经元都与上一层的所有神经元相连,以及下一层的所有神经元相连。
- 在卷积神经网络中,全连接层通常位于网络的末端,紧接在一系列卷积层和池化层之后。它们将卷积层提取的特征转换为最终的分类结果。
- 有时,为了减少参数数量并提高效率,全连接层会被替换为全局平均池化
前四步为Feature Extraction:特征提取器
卷积神经网络(CNN):自动从图像中学习层次化的特征表示。
后面两步为classification:分类器
目的:
- 预测:给定一个新的、未见过的数据实例,预测它属于哪个类别。
- 组织:将数据按照特定的属性或特征进行分组,以便于进一步的分析和处理。
分类类型:
- 二分类:只有两个类别,例如“是/否”,“阳性/阴性”。
- 多分类:有三个或更多的类别,例如“红色/绿色/蓝色”。
- 多标签分类:每个实例可以同时属于多个类别,例如一篇文档可能同时被标记为“科技”和“教育”。
方法:
监督学习分类算法:
- 逻辑回归:用于二分类问题,通过最大化似然函数来估计参数。
- 支持向量机(SVM):寻找一个最优的边界(称为超平面),以最大间隔分隔不同类别的数据。
- 决策树:通过一系列的判断规则来进行分类。
- 随机森林:由多个决策树组成,每个树给出一个分类结果,通过投票决定最终类别。
- 神经网络:模仿人脑的处理方式,通过多层神经元进行特征学习和分类。
无监督学习分类算法:
- K-均值聚类:将数据点分配到K个簇中,每个簇的中心由簇内数据的均值确定。
- 层次聚类:通过逐步合并或分裂已有的簇来形成一棵聚类树。
RGB代表红绿蓝(Red Green Blue),是一种颜色模型,用于在电子显示设备上表示颜色。在RGB颜色模型中,通过混合不同强度的红色、绿色和蓝色光来创建各种颜色。
栅格图像通常使用RGB颜色模型来表示颜色。这意味着栅格图像的每个像素都包含红色、绿色和蓝色的强度值,这些值共同决定了像素显示的颜色。
图像到底是什么?根据核的大小从输入中每次取同大小块,一次遍历所有图像。
单通道:关于核中的第一个元素,从1 * 5 * 5 输入中拿出 第一个3 * 3 框与核做卷积(数乘),
数乘:对应元素相乘再相加得结果
遍历完成得到的输出。
对于多通道:
每个通道都要配一个核,卷积核的数量与通道匹配,然后各自进行数乘
最后将得到的三个结果各个数相加得到输出。
cat:拼接
多个垒起来,输入 n * w * h,通过m个 n * w 1* h1卷积核就能输出 m * w 1* h1,得到多个输出。
在卷积神经网络(CNN)中,“权重”(Weights)是指神经网络中的参数,它们在训练过程中通过学习数据集进行优化。权重决定了卷积核(或过滤器)的作用方式,以及如何从输入特征图中提取特征。
代码与输出。
Padding方法:
5 * 5 和 3 * 3 的卷积核 得到 3 * 3,但是希望图像大小不变,得到 5 * 5
把图像周围填充0成 7 * 7 ,就可以了。这里主要参考上面的公式。
Stried步长=2
如果要得到尺寸为2的输出,则有(5-3)/2+1=2
import torch input = [3,4,6,5,7, 2,4,6,8,2, 1,6,7,8,4, 9,7,4,6,2, 3,7,5,4,1]#构建输入数据 input = torch.Tensor(input).view(1, 1, 5, 5) # 1 batch, 1 channel, 5x5 image,构建输入数据 #conv_layer = torch.nn.Conv2d(1, 1, kernel_size=3, padding=1, bias=False)#构建卷积层,1个输入通道,1个输出通道,卷积核大小为3x3,padding为1就是加一圈0,bias偏置量为False conv_layer = torch.nn.Conv2d(1, 1, kernel_size=3, stride=2, bias=False) kernel = torch.Tensor([1,2,3,4,5,6,7,8,9]).view(1, 1, 3, 3) #构建卷积核,1个输入通道,1个输出通道,卷积核大小为3x3 conv_layer.weight.data = kernel.data#将卷积核赋值给卷积层的权重 output = conv_layer(input)#进行卷积操作 print(output)把padding=1改成stride=2即可、
最大池化层MaxPooling:默认步长为2,图像尺寸缩成原来一半,选择里面最大的数作为输出,通常用于卷积神经网络中的特征提取阶段,紧跟在卷积层之后,用于减小特征图的尺寸,同时保留关键特征,为后续的全连接层或其它层提供更抽象的特征表示。
import torch input = [3,4,6,5, 2,4,6,8, 1,6,7,5, 9,7,4,6, ] input = torch.Tensor(input).view(1, 1, 4, 4) maxpooling_layer = torch.nn.MaxPool2d(kernel_size=2) # 默认stride=kernel_size=2 output = maxpooling_layer(input) print(output)最大池化层不影响输入输出,只缩小一半尺寸。
20x4x4=320个元素
最后一个全连接层直接将320降到10维,即分成10类。
ReLU层(Rectified Linear Unit Layer)是深度学习中常用的一种激活函数层,其主要作用是在神经网络中引入非线性因素,使得网络能够学习和模拟更复杂的函数。
把全连接网络改成卷积神经网络
课后作业。。。。