One-hot 编码

One-hot 编码(独热编码) 是一种将类别型变量(离散、非数值)转换为数值向量的方法

为什么需要独热编码?

因为大多数机器学习模型(如线性回归、神经网络)只能处理数值输入,而不能直接理解字符串或离散标签

核心思想:用一个只含 0 和 1 的向量表示一个类别,其中“1”所在的位置代表该类别。

图像分类了解

如果使用全连接神经网络,会导致参数量爆炸。于是引入卷积神经网络

卷积神经网络

简单介绍

图片的构成

字母 全称 中文含义 说明
W Width 宽度 图像的水平方向像素数(横向有多少列)
H Height 高度 图像的垂直方向像素数(纵向有多少行)
C Channels 通道数 图像的颜色通道数量(如 RGB = 3 个通道)

卷积核

卷积核(Convolution Kernel),也叫 滤波器(Filter),它们是深度学习和图像处理中用于提取图像特征的关键工具。

卷积核大小又称为 神经元的感受野

padding填充

加 padding → 可以保持输出大小不变 =>解决特征图尺寸变小的问题。

zero padding 是最常用且最简单的选择:

  • 0 对乘法没有影响(0 × 任意数 = 0),不会引入额外干扰。
  • 卷积计算时,边界外的像素贡献为 0,相当于“忽略”。

有关卷积核的参数计算

原始特征图:

深度 = 通道数(Channels),即特征图的通道数=卷积核深度

新特征图:

输出深度 = 卷积核的数量,即卷积核的个数=新特征图的深度

一个卷积层是什么?

从原始特征图经过卷积得到新特征图,这就是一个卷积层。

参数量如何计算!!!(重点)

图中卷积核有5个,每个卷积核有3*3*3(W:3 H:3  C:3),所以卷积核参数为5*3*3*3

特征图一直大小不变, 你怎么卷参数展平后都需要大量参数。如何解决?

特征图怎么变小

方法一:扩大步长

方法二:池化

将划分的每一块都用一个数据来代替

更常用的是最大池化。减少计算是关键

Pooling(2) 表示使用 2×2 的窗口 进行池化操作 

  • 参数
    • 核大小 = 2×2
    • 步长 = 2

自适应平均池化(Adaptive Average Pooling),将任意大小的输入强制调整为固定输出尺寸7×7  这里的 (7) 表示输出的 高度和宽度都是 7

手搓卷积神经网络

分析过程:

3 * 224*224 -> 64*224*224:首先卷积核肯定是64个,卷积核深度为3 大小选择常用3*3,经padding保持特征图尺寸不变

64*224*224 ->(128 * 224*224):卷积核128个,卷积核深度64,padding填充

(128 * 224*224)->128*112*112:第一次池化  通常是 MaxPool(2)

128*112*112 –> 256*56*56:第二次池化+卷积  先卷积 → 再池化 → 尺寸变小(56),通道数变多(256)=卷积核个数

256*56*56 -> 512 * 28*28:第三次池化+卷积 同上

512 * 28*28 -> 1024 * 14*14:第四次池化+卷积  同上

1024 * 14*14 ->1024*7*7:第五次池化

实现了从 224→7 的空间压缩!

卷积与全连接

如何把这个“卷”出来的特征,变成一个具体的类别(比如猫、狗、车)?

flatten 操作:

  • 把 3×3 的二维特征图“拉平”成一维向量

为什么 flatten?
因为后续的分类任务要用全连接层,而全连接层只能接收一维向量作为输入

输出是 3 个数字:[11, 11.7, 22]

例如:如果类别是【猫、狗、车】,那么:

  • 猫:得分 11
  • 狗:得分 11.7
  • 车:得分 22→ 最终预测为 “车”(因为得分最高)

CNN 的“卷”是为了提取特征,而“分类”是靠最后的全连接层完成的。

红框左边(全连接层的原始输出)(作为output)是给loss模型的输入,右边是经过(softmax)loss模型自动将左边转化为右边

分类神经网络

首先给一张图片,开始卷积,得到新的特征图后,经flatten 拉直,经过全连接,输出每一类的预测值(就是上图红框左侧的数据,即要给loss模型的参数),经过softmax之后,跟真实的标签求loss,求出loss之后回传梯度(与回归一样),之后更新模型。唯一不同 输入输出

更多推荐