Day 43图像数据与显存机制@浙大疏锦行

Day 43 学习笔记:图像数据与显存机制@浙大疏锦行

一、 图像数据基础

  1. 数据形状 (Shape)

    • 结构化数据 :(样本数, 特征数)

    • 图像数据

      :

      复制代码
      (通道数, 高, 宽)

      PyTorch 默认格式 (Channel First)

      • 灰度图 (如 MNIST):通道数 = 1
      • 彩色图 (如 CIFAR-10):通道数 = 3 (RGB)
  2. 维度陷阱

    • PyTorch 使用 (C, H, W)。
    • Matplotlib/OpenCV 通常使用 (H, W, C)。
    • 注意 :在使用 plt.imshow() 可视化 PyTorch 张量时,必须先使用 np.transpose 或 permute 交换维度顺序。

二、 图像神经网络 (MLP) 定义

  1. 展平操作 (Flatten)
    • MLP 全连接层只能接收一维向量。
    • 必须在输入层前使用 nn.Flatten() 或 x.view() 将 (C, H, W) 拉平为 (C×H×W) 的一维向量。
  2. Batch Size 与模型定义
    • 模型定义阶段 :无关 。nn.Linear 等层定义时不涉及 Batch Size。
    • 数据加载阶段 :相关 。DataLoader 中设置 Batch Size。
    • 前向传播:PyTorch 会自动处理第一维度的 Batch,模型内部计算逻辑不变。

三、 显存 (VRAM) 占用分析

显存不仅仅用来存图片,主要由以下 4部分 组成:

组成部分 说明 估算公式 (Float32)
1. 模型参数 模型的权重 (Weights) 和偏置 (Bias) 参数量 ×× 4 Bytes
2. 梯度 反向传播计算出的导数 ≈≈ 参数量 ×× 4 Bytes
3. 优化器状态 优化器更新参数所需的额外信息 SGD : 0 Adam: ≈≈ 参数量 ×× 8 Bytes (动量+方差)
4. 中间变量 & 数据 输入数据 + 每一层的输出特征图 (Activations) 受 Batch Size 影响最大 Batch Size ×× (单样本大小 + 中间层大小)

结论 :模型参数和优化器占用是固定的(这也是为什么大模型很难跑起来),而调整 Batch Size 是控制显存占用的主要手段。

四、 Batch Size 的选择策略

  1. 显存限制 (OOM)
    • Batch Size 设置过大会导致 Out Of Memory。
    • 建议从 16, 32, 64 开始尝试,通常设置为显卡最大承载能力的 80% 左右。
  2. 对训练的影响
    • Batch Size = 1:梯度随机性大,震荡剧烈,难以收敛。
    • Batch Size 较大:利用矩阵并行计算加速;梯度是多个样本的平均值,方向更准,训练更稳定。

@浙大疏锦行

相关推荐
SEO_juper8 分钟前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
用户8356290780511 小时前
使用 Python 对 Excel 工作表进行排序
后端·python
for_ever_love__2 小时前
MySQL 全文索引实战:FULLTEXT、ngram 中文分词与 MATCH AGAINST 到底该怎么用
java·python·mysql·全文检索·分词·索引·ngram
用户8356290780512 小时前
使用 Python 合并 PowerPoint 演示文稿
后端·python
weixin_461769402 小时前
VS Code 中创建 Jupyter 文件(.ipynb)
ide·python·jupyter
2601_966949652 小时前
多市场量化策略的数据接口应该如何设计:从数据层架构到策略接入
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
全栈弄潮儿2 小时前
Python实战第1期:Python环境搭建与第一个程序
python
心易行者2 小时前
Agent应用+API端点商业化进阶实战:从单体智能体到可付费调用的API全流程
运维·服务器·人工智能·python·apache
weixin199701080163 小时前
《1688图片空间API踩坑:img.upload 与 album.* 的防盗链与CDN缓存问题》(附Python源码)
开发语言·python·缓存
布吉岛的石头3 小时前
Java 程序员第 49 阶段11:Java 接 BERT:用 ONNX Runtime 做句向量推理
java·人工智能·python·深度学习·bert·transformer