深度学习|表示学习|卷积神经网络|详细推导每一层的维度变化|14

如是我闻: 一个经典的卷积神经网络(CNN)架构,呈现的是输入图像通过多个卷积层、池化层以及全连接层,最终输出分类结果的过程。整个过程的核心是理解输入特征图的尺寸如何在每一层发生变化,我们可以通过卷积核大小、步长、填充和池化操作的参数,来推导每一层的维度变化。


1. 输入图像

  • 输入大小:83×83
    • 输入是一个 83 × 83 83 \times 83 83×83 的二维图像(假设是灰度图,只有一个通道)。

2. 第一层:卷积操作

  • 卷积核大小:9×9
  • 卷积核个数:64(表示有 64 个特征图)
  • 步长(stride):默认 1
  • 填充(padding):未明确,假设没有填充( p = 0 p = 0 p=0)
输出大小计算公式

输出大小 = 输入大小 − 卷积核大小 + 2 ⋅ 填充 步长 + 1 \text{输出大小} = \frac{\text{输入大小} - \text{卷积核大小} + 2 \cdot \text{填充}}{\text{步长}} + 1 输出大小=步长输入大小−卷积核大小+2⋅填充+1

套入公式:
输出大小 = 83 − 9 + 2 ⋅ 0 1 + 1 = 75 × 75 \text{输出大小} = \frac{83 - 9 + 2 \cdot 0}{1} + 1 = 75 \times 75 输出大小=183−9+2⋅0+1=75×75

输出维度
  • 第一层输出有 64 个特征图,每个特征图大小为 75 × 75 75 \times 75 75×75。
  • 输出维度:64 × 75 × 75

3. 第二层:池化操作(Pooling)

  • 池化类型:10×10 窗口
  • 步长(stride):5(5×5 的下采样)
输出大小计算公式

输出大小 = 输入大小 − 池化窗口大小 步长 + 1 \text{输出大小} = \frac{\text{输入大小} - \text{池化窗口大小}}{\text{步长}} + 1 输出大小=步长输入大小−池化窗口大小+1

套入公式:
输出大小 = 75 − 10 5 + 1 = 14 × 14 \text{输出大小} = \frac{75 - 10}{5} + 1 = 14 \times 14 输出大小=575−10+1=14×14

输出维度
  • 池化不会改变通道数,所以输出的通道数仍然是 64。
  • 输出维度:64 × 14 × 14

4. 第三层:卷积操作

  • 卷积核大小:9×9
  • 卷积核个数:256(输出通道数增加到 256)
  • 步长(stride):默认 1
  • 填充(padding):未明确,假设没有填充( p = 0 p = 0 p=0)
输出大小计算公式

输出大小 = 输入大小 − 卷积核大小 + 2 ⋅ 填充 步长 + 1 \text{输出大小} = \frac{\text{输入大小} - \text{卷积核大小} + 2 \cdot \text{填充}}{\text{步长}} + 1 输出大小=步长输入大小−卷积核大小+2⋅填充+1

套入公式:
输出大小 = 14 − 9 + 2 ⋅ 0 1 + 1 = 6 × 6 \text{输出大小} = \frac{14 - 9 + 2 \cdot 0}{1} + 1 = 6 \times 6 输出大小=114−9+2⋅0+1=6×6

输出维度
  • 卷积核的数量是 256,所以输出有 256 个特征图。
  • 输出维度:256 × 6 × 6

5. 第四层:池化操作

  • 池化类型:6×6 窗口
  • 步长(stride):4(4×4 的下采样)
输出大小计算公式

输出大小 = 输入大小 − 池化窗口大小 步长 + 1 \text{输出大小} = \frac{\text{输入大小} - \text{池化窗口大小}}{\text{步长}} + 1 输出大小=步长输入大小−池化窗口大小+1

套入公式:
输出大小 = 6 − 6 4 + 1 = 1 × 1 \text{输出大小} = \frac{6 - 6}{4} + 1 = 1 \times 1 输出大小=46−6+1=1×1

输出维度
  • 池化后,每个特征图缩减为 1 × 1 1 \times 1 1×1。
  • 输出维度:256 × 1 × 1

6. 全连接层

  • 输入:256 × 1 × 1

    • 全连接层会将 256 × 1 × 1 256 \times 1 \times 1 256×1×1 的张量展平为 256 个节点。
    • 每个节点通过权重映射到最终的分类输出。
  • 输出:101(分类结果)

    • 最终输出是 101 个类别的分类概率。

维度变化总结

  • 输入图像: 83 × 83 83 \times 83 83×83
  • 第一层(卷积): 64 × 75 × 75 64 \times 75 \times 75 64×75×75
  • 第二层(池化): 64 × 14 × 14 64 \times 14 \times 14 64×14×14
  • 第三层(卷积): 256 × 6 × 6 256 \times 6 \times 6 256×6×6
  • 第四层(池化): 256 × 1 × 1 256 \times 1 \times 1 256×1×1
  • 全连接层:展平为 256 256 256,输出为 101 101 101 类别。

以上

相关推荐
星幻元宇VR11 小时前
公共安全实训展厅设备【人防知识学习系统】
科技·学习·安全
是Dream呀12 小时前
基于深度学习的人类行为识别算法研究
人工智能·深度学习·算法
人工智能培训12 小时前
破解数据发展瓶颈 激活数字经济新动能
大数据·数据库·人工智能·深度学习·神经网络·机器学习·生成对抗网络
绝世番茄13 小时前
鸿蒙 HarmonyOS ArkTS 音乐播放器界面布局深度学习指南
深度学习·华为·list·harmonyos·鸿蒙
happyprince13 小时前
03_NVIDIA_ModelOpt-量化算法深入
人工智能·深度学习·算法
大鱼>13 小时前
AI+货物追踪:智能快递柜追踪系统
人工智能·深度学习·算法·机器学习
程序喵大人13 小时前
【AI专栏】图解Transformer - 第04章:LLM生成
人工智能·深度学习·llm·transformer
数智工坊13 小时前
视图集合化+轻量Transformer:VSFormer开启多视图3D形状理解新范式
深度学习·3d·transformer
心中有国也有家14 小时前
AtomGit Flutter 鸿蒙客户端:情绪日记的时间线实现
学习·flutter·华为·harmonyos
百里香酚兰15 小时前
【python学习笔记】pyttsx3库疑似只播报一次语音
笔记·python·学习