CNN的各种知识点(一):卷积神经网络CNN通道数的理解!

news/2025/2/1 3:35:23 标签: cnn, 深度学习, 神经网络

卷积神经网络CNN通道数的理解!

      • 通道数的核心概念解析
        • 1. 通道数的本质
      • 2. 单张灰度图的处理
        • 示例:
      • 3. 批量输入的处理
        • 通道与批次的关系:
      • 4. RGB三通道输入的处理
        • 计算过程:
        • 示例:
      • 5. 通道数的实际意义
      • 6. 可视化理解
        • (1) 单通道输入(灰度图)的过滤器
        • (2) 三通道输入(RGB)的过滤器
      • 总结

通道数的核心概念解析

1. 通道数的本质

在卷积神经网络中,通道数(Channels)表示不同过滤器的数量。每个通道对应一个独立的过滤器(Filter/Kernel),用于从输入中提取特定类型的特征(如边缘、纹理、颜色分布等)。以下分情况详细说明:


2. 单张灰度图的处理

假设输入是一张灰度图(1个通道),经过第一层卷积操作:

nn.Conv2d(1, 64, kernel_size=3)  # 输入通道1,输出通道64
  • 输入形状(1, H, W) → 单样本(无批次维度)、1通道、高度H、宽度W。
  • 输出形状(64, H_out, W_out)64个通道,每个通道是一个过滤器提取的特征图。
  • 参数数量:每个过滤器有 3x3=9 个参数,共 64个过滤器 → 总参数 64x1x3x3 = 576
示例:
  • 输入:单张 28x28 的灰度图(形状 (1, 28, 28))。
  • 输出(64, 26, 26)(假设无填充,步幅1)。

3. 批量输入的处理

当输入是一个批次(Batch)的多个样本时:

  • 输入形状(B, 1, H, W) → 批次大小B,1通道,高度H,宽度W。
  • 输出形状(B, 64, H_out, W_out)每个样本独立生成64个通道
  • 关键点
    每个样本在批次中独立计算,输出通道数与批次大小无关。
    例如:
    • 输入 10 张灰度图(形状 (10, 1, 28, 28)),
    • 输出 (10, 64, 26, 26) → 每张图对应 64 个通道。
通道与批次的关系:
  • 通道是特征维度:每个通道表示一种特征提取结果。
  • 批次是样本维度:每个样本独立处理,互不影响。

4. RGB三通道输入的处理

如果输入是RGB图像(3个通道),需调整输入通道数:

nn.Conv2d(3, 64, kernel_size=3)  # 输入通道3,输出通道64
  • 输入形状(B, 3, H, W) → 批次大小B,3通道(R、G、B)。
  • 输出形状(B, 64, H_out, W_out) → 输出仍为64个通道。
  • 参数数量:每个过滤器有 3个3x3卷积核(对应3个输入通道),共 64个过滤器 → 总参数 64x3x3x3 = 1728
计算过程:
  1. 多通道卷积:每个过滤器的3个卷积核分别与输入图像的R、G、B通道进行卷积。
  2. 结果相加:将三个通道的卷积结果相加,得到一个输出通道的特征图。
  3. 重复64次:使用64个不同的过滤器,生成64个输出通道。
示例:
  • 输入:单张RGB图像(形状 (3, 224, 224))。
  • 输出(64, 222, 222)(假设无填充,步幅1)。

5. 通道数的实际意义

  • 特征提取的多样性
    每个通道对应一个特定的特征检测器。例如:
    • 某些通道检测水平边缘,
    • 某些通道检测垂直边缘,
    • 某些通道检测圆形纹理。
  • 深层网络的组合
    随着网络加深,高层通道可能组合低层特征,检测更复杂的模式(如物体部件)。

6. 可视化理解

(1) 单通道输入(灰度图)的过滤器
输入通道(1)过滤器1(3x3)过滤器2(3x3)过滤器64(3x3)
灰度图像特征图1特征图2特征图64
(2) 三通道输入(RGB)的过滤器
输入通道(R、G、B)过滤器1(3x3x3)过滤器2(3x3x3)过滤器64(3x3x3)
R通道卷积结果特征图1-R特征图2-R特征图64-R
G通道卷积结果特征图1-G特征图2-G特征图64-G
B通道卷积结果特征图1-B特征图2-B特征图64-B
相加结果特征图1特征图2特征图64

总结

  • 通道数的决定因素:由卷积层的 out_channels 参数定义(如64),与输入批次大小无关。
  • 输入多通道(如RGB)的处理:每个过滤器为多通道卷积核,输出仍为定义的通道路数。
  • 批次维度与通道维度的独立性:每个样本独立生成自己的特征图,通道是特征空间的维度。

http://www.niftyadmin.cn/n/5838987.html

相关文章

一文读懂fgc之cms

一文读懂 fgc之cms-实战篇 1. 前言 线上应用运行过程中可能会出现内存使用率较高,甚至达到95仍然不触发fgc的情况,存在内存打满风险,持续触发fgc回收;或者内存占用率较低时触发了fgc,导致某些接口tp99,tp…

SQL99之内连接查询

SQL99是SQL语言的一个标准,于1999年发布。内连接查询是SQL中非常常用的一种查询方式,用于根据指定的条件从两个或多个表中获取相关联的数据。下面将详细介绍SQL99中的内连接查询,并以通熟易懂的语言进行讲解,同时给出代码例子、注…

(java) IO流

学习IO流之前,我们需要先认识file对象,帮助我们更好的使用IO流 1.1 file 作用:关联硬盘上的文件 写法: File(String path); (推荐)File(String parent, String child); //由父级路径,再子级路径拼接而成File(File p…

QEMU 和 GDB 调试 Linux 内核

使用 QEMU 和 GDB 调试 Linux 内核是一种非常强大的方法,可以帮助开发人员调试和分析内核的行为。下面将详细介绍如何设置和使用 QEMU 和 GDB 来调试 Linux 内核。 环境准备 ::: tip 系统环境 22.04.3-Ubuntugcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0GNU gdb (U…

数学建模算法汇总(全网最全,含matlab案例代码)

数学建模常用的算法分类 全国大学生数学建模竞赛中,常见的算法模型有以下30种: 最小二乘法数值分析方法图论算法线性规划整数规划动态规划贪心算法分支定界法蒙特卡洛方法随机游走算法遗传算法粒子群算法神经网络算法人工智能算法模糊数学时间序列分析马…

PyTorch 与 Python 版本对应关系

PyTorch 支持多个 Python 版本,但不同版本的 PyTorch 可能对 Python 版本有不同的要求。一般来说: PyTorch 与 Python 版本对应关系 PyTorch 版本支持的 Python 版本2.2.x3.8 - 3.122.1.x3.8 - 3.112.0.x3.8 - 3.101.13.x3.7 - 3.101.12.x3.7 - 3.101.…

7层还是4层?网络模型又为什么要分层?

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 一、为什么要分层 \quad 网络通信的复杂性促使我们需要一种分层的方法来理解和管理网络。就像建筑一样,我们不会把所有功能都混在一起…

举例说明python单利模式的必要性

单例模式的核心目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这种设计模式在某些场景下非常必要,尤其是在需要严格控制资源访问、共享状态或配置管理的场景中。下面通过几个具体的例子来说明Python中单例模式的必要性。 1. 数据库…