当前位置: 首页 > wzjs >正文

东莞土木建筑学会网站网络广告联盟

东莞土木建筑学会网站,网络广告联盟,外贸网站空间,电影网站怎么制作图像数据与显存 知识点回顾 图像数据的格式:灰度和彩色数据模型的定义显存占用的4种地方 模型参数梯度参数优化器参数数据批量所占显存神经元输出中间状态 batchisize和训练的关系 作业:今日代码较少,理解内容即可 在 PyTorch 中,…
图像数据与显存

知识点回顾

  1. 图像数据的格式:灰度和彩色数据
  2. 模型的定义
  3. 显存占用的4种地方
    1. 模型参数+梯度参数
    2. 优化器参数
    3. 数据批量所占显存
    4. 神经元输出中间状态
  4. batchisize和训练的关系

作业:今日代码较少,理解内容即可

在 PyTorch 中,图像数据的形状通常遵循 (通道数, 高度, 宽度) 的格式(即 Channel First 格式),这与常见的 (高度, 宽度, 通道数)(Channel Last,如 NumPy 数组)不同。---注意顺序关系,

注意点:

  1. 如果用matplotlib库来画图,需要转换下顺序 image = np.transpose(image.numpy(), (1, 2, 0)
  2. 模型输入通常需要批次维度(Batch Size),形状变为 (批次大小, 通道数, 高度, 宽度)。例如,批量输入 10 张 MNIST 图像时,形状为 (10, 1, 28, 28)

对于图像数据集比如MNIST构建神经网络来训练的话,比起之前的结构化数据多了一个展平操作:

# 定义两层MLP神经网络
class MLP(nn.Module):def __init__(self, input_size=784, hidden_size=128, num_classes=10):super().__init__()self.flatten = nn.Flatten()  # 将28x28的图像展平为784维向量self.layer1 = nn.Linear(input_size, hidden_size)  # 第一层:784个输入,128个神经元self.relu = nn.ReLU()  # 激活函数self.layer2 = nn.Linear(hidden_size, num_classes)  # 第二层:128个输入,10个输出(对应10个数字类别)def forward(self, x):x = self.flatten(x)  # 展平图像x = self.layer1(x)   # 第一层线性变换x = self.relu(x)     # 应用ReLU激活函数x = self.layer2(x)   # 第二层线性变换,输出logitsreturn x# 初始化模型
model = MLP()

MLP的输入层要求输入是一维向量,但 MNIST 图像是二维结构(28×28 像素),形状为 [1, 28, 28](通道 × 高 × 宽)。nn.Flatten() 展平操作将二维图像 “拉成” 一维向量(784=28×28 个元素),使其符合全连接层的输入格式

在面对数据集过大的情况下,由于无法一次性将数据全部加入到显存中,所以采取了分批次加载这种方式。所以实际应用中,输入图像还存在batch_size这一维度,但在PyTorch中,模型定义和输入尺寸的指定不依赖于batch_size,无论设置多大的batch_size,模型结构和输入尺寸的写法都是不变的,batch_size是在数据加载阶段定义的(之前提过这是DataLoader的参数)

那么显存设置多少合适呢?如果设置的太小,那么每个batch_size的训练不足以发挥显卡的能力,浪费计算资源;如果设置的太大,会出现OOM(out of memory)显存一般被以下内容占用:

  1. 模型参数与梯度:模型的权重和对应的梯度会占用显存,尤其是深度神经网络(如 Transformer、ResNet 等),一个 1 亿参数的模型(如 BERT-base),单精度(float32)参数占用约 400MB(1e8×4Byte),加上梯度则翻倍至 800MB(每个权重参数都有其对应的梯度)
  2. 部分优化器(如 Adam)会为每个参数存储动量(Momentum)和平方梯度(Square Gradient),进一步增加显存占用(通常为参数大小的 2-3 倍)
  3. 其他开销
  • 单张图像尺寸:1×28×28(通道×高×宽),归一化转换为张量后为float32类型,显存占用:1×28×28×4 Byte = 3,136 Byte ≈ 3 KB
  • 批量数据占用:batch_size × 单张图像占用,例如batch_size=64时,数据占用为64×3 KB ≈ 192 KB

对于batch_size的设置,大规模数据时,通常从16开始测试,然后逐渐增加,确保代码运行正常且不报错,直到出现内存不足(OOM)报错或训练效果下降,此时选择略小于该值的 batch_size。训练时候搭配 nvidia-smi 监控显存占用,合适的 batch_size = 硬件显存允许的最大值 × 0.8(预留安全空间),并通过训练效果验证调整

@浙大疏锦行

http://www.dtcms.com/wzjs/230588.html

相关文章:

  • 成都电子商务网站建站深圳seo专家
  • 某网站开发工具和技术高质量发展服务业
  • 做淘宝图片的网站百度指数平台官网
  • 网站关键词几个字线上推广渠道主要有哪些
  • 做招商类型的网站百度搜索引擎广告投放
  • 查询网站是否过期站长推荐入口自动跳转
  • 动画型网站seo是怎么优化
  • 网站建设业务的途径的体会网络最有效的推广方法
  • 企业信息查询app哪个最好seo长尾快速排名
  • 教育局网站建设百度搜不干净的东西
  • 郑州做网站建设公司整站seo排名费用价格
  • 潮州专业网站建设制作seo网络优化平台
  • 那些网站是vue做的今日新闻简讯30条
  • 深圳教育科技网站建设免费搭建网站
  • 新手学做网站教程上海广告公司排名
  • 做视频广告在哪个网站能够赚钱南宁seo公司
  • 星子网二手房网站优化及推广
  • 网站初期如何推广的百度广告登录入口
  • 橙色系网站百度热搜榜怎么打开
  • 枞阳做网站新闻头条今日要闻军事
  • 淘宝特价版徐州百度快照优化
  • 云主机 做网站web成品网站源码免费
  • 邢台专业网站建设公司网络营销策略案例
  • javaee可以做网站么营销软文范例大全300字
  • wordpress视频床国内seo排名分析主要针对百度
  • 做电影网站违法吗软文代写新闻稿
  • 日本网站制作需要多少钱线上营销培训
  • 404免费模板下载seo模拟点击有用吗
  • 做网站的标签及属性技能培训班
  • 网站编辑器目前最靠谱的推广平台