东营网站制作公司wordpress 上传html

张小明 2025/12/26 2:50:05
东营网站制作公司,wordpress 上传html,抖音代运营合作模式,wordpress自定义代码在哪里设置一、 图像数据的介绍 1.1 灰度图像 昨天我们介绍了minist这个经典的手写数据集#xff0c;作为图像数据#xff0c;相较于结构化数据#xff08;表格数据#xff09;他的特点在于他每个样本的的形状并不是(特征数#xff0c;)#xff0c;而是(宽#xff0c;高#xf…一、 图像数据的介绍1.1 灰度图像昨天我们介绍了minist这个经典的手写数据集作为图像数据相较于结构化数据表格数据他的特点在于他每个样本的的形状并不是(特征数)而是(宽高通道数)# 先继续之前的代码 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具 from torchvision import datasets, transforms # torchvision 是一个用于计算机视觉的库datasets 和 transforms 是其中的模块 import matplotlib.pyplot as plt # 设置随机种子确保结果可复现 torch.manual_seed(42) # 1. 数据预处理该写法非常类似于管道pipeline # transforms 模块提供了一系列常用的图像预处理操作 # 先归一化再标准化 transform transforms.Compose([ transforms.ToTensor(), # 转换为张量并归一化到[0,1] transforms.Normalize((0.1307,), (0.3081,)) # MNIST数据集的均值和标准差这个值很出名所以直接使用 ]) import matplotlib.pyplot as plt # 2. 加载MNIST数据集如果没有会自动下载 train_dataset datasets.MNIST( root./data, trainTrue, downloadTrue, transformtransform ) test_dataset datasets.MNIST( root./data, trainFalse, transformtransform )# 随机选择一张图片可以重复运行每次都会随机选择 sample_idx torch.randint(0, len(train_dataset), size(1,)).item() # 随机选择一张图片的索引 # len(train_dataset) 表示训练集的图片数量size(1,)表示返回一个索引torch.randint() 函数用于生成一个指定范围内的随机数,item() 方法将张量转换为 Python 数字 image, label train_dataset[sample_idx] # 获取图片和标签 # 可视化原始图像需要反归一化 def imshow(img): img img * 0.3081 0.1307 # 反标准化 npimg img.numpy() plt.imshow(npimg[0], cmapgray) # 显示灰度图像 plt.show() print(fLabel: {label}) imshow(image)1.2 彩色图像在 PyTorch 中图像数据的形状通常遵循 (通道数, 高度, 宽度) 的格式即 Channel First 格式这与常见的 (高度, 宽度, 通道数)Channel Last如 NumPy 数组不同。---注意顺序关系注意点如果用matplotlib库来画图需要转换下顺序我们后续介绍模型输入通常需要 批次维度Batch Size形状变为 (批次大小, 通道数, 高度, 宽度)。例如批量输入 10 张 MNIST 图像时形状为 (10, 1, 28, 28)。# 打印一张彩色图像用cifar-10数据集 import torch import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt import numpy as np # 设置随机种子确保结果可复现 torch.manual_seed(42) # 定义数据预处理步骤 transform transforms.Compose([ transforms.ToTensor(), # 转换为张量并归一化到[0,1] transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) # 标准化处理 ]) # 加载CIFAR-10训练集 trainset torchvision.datasets.CIFAR10( root./data, trainTrue, downloadTrue, transformtransform ) # 创建数据加载器 trainloader torch.utils.data.DataLoader( trainset, batch_size4, shuffleTrue ) # CIFAR-10的10个类别 classes (plane, car, bird, cat, deer, dog, frog, horse, ship, truck) # 随机选择一张图片 sample_idx torch.randint(0, len(trainset), size(1,)).item() image, label trainset[sample_idx] # 打印图片形状 print(f图像形状: {image.shape}) # 输出: torch.Size([3, 32, 32]) print(f图像类别: {classes[label]}) # 定义图像显示函数适用于CIFAR-10彩色图像 def imshow(img): img img / 2 0.5 # 反标准化处理将图像范围从[-1,1]转回[0,1] npimg img.numpy() plt.imshow(np.transpose(npimg, (1, 2, 0))) # 调整维度顺序(通道,高,宽) → (高,宽,通道) plt.axis(off) # 关闭坐标轴显示 plt.show() # 显示图像 imshow(image)二、 图像相关的神经网络的定义考虑课程内容的推进今日的内容只提定义不涉及训练和测试过程2.1 黑白图像模型的定义# 先归一化再标准化 transform transforms.Compose([ transforms.ToTensor(), # 转换为张量并归一化到[0,1] transforms.Normalize((0.1307,), (0.3081,)) # MNIST数据集的均值和标准差这个值很出名所以直接使用 ]) import matplotlib.pyplot as plt # 2. 加载MNIST数据集如果没有会自动下载 train_dataset datasets.MNIST( root./data, trainTrue, downloadTrue, transformtransform ) test_dataset datasets.MNIST( root./data, trainFalse, transformtransform )# 定义两层MLP神经网络 class MLP(nn.Module): def __init__(self): super(MLP, self).__init__() self.flatten nn.Flatten() # 将28x28的图像展平为784维向量 self.layer1 nn.Linear(784, 128) # 第一层784个输入128个神经元 self.relu nn.ReLU() # 激活函数 self.layer2 nn.Linear(128, 10) # 第二层128个输入10个输出对应10个数字类别 def forward(self, x): x self.flatten(x) # 展平图像 x self.layer1(x) # 第一层线性变换 x self.relu(x) # 应用ReLU激活函数 x self.layer2(x) # 第二层线性变换输出logits return x # 初始化模型 model MLP() device torch.device(cuda if torch.cuda.is_available() else cpu) model model.to(device) # 将模型移至GPU如果可用 from torchsummary import summary # 导入torchsummary库 print(\n模型结构信息) summary(model, input_size(1, 28, 28)) # 输入尺寸为MNIST图像尺寸我们关注和之前结构化MLP的差异输入需要展平操作MLP 的输入层要求输入是一维向量但 MNIST 图像是二维结构28×28 像素形状为 [1, 28, 28]通道 × 高 × 宽。nn.Flatten()展平操作 将二维图像 “拉成” 一维向量78428×28 个元素使其符合全连接层的输入格式。其中不定义这个flatten方法直接在前向传播的过程中用 x x.view(-1, 28 * 28) 将图像展平为一维向量也可以实现输入数据的尺寸包含了通道数input_size(1, 28, 28)参数的计算第一层 layer1全连接层权重参数输入维度 × 输出维度 784 × 128 100,352偏置参数输出维度 128合计100,352 128 100,480第二层 layer2全连接层权重参数输入维度 × 输出维度 128 × 10 1,280偏置参数输出维度 10 合计1,280 10 1,290总参数100,480layer1 1,290layer2 101,7702.2 彩色图像模型的定义class MLP(nn.Module): def __init__(self, input_size3072, hidden_size128, num_classes10): super(MLP, self).__init__() # 展平层将3×32×32的彩色图像转为一维向量 # 输入尺寸计算3通道 × 32高 × 32宽 3072 self.flatten nn.Flatten() # 全连接层 self.fc1 nn.Linear(input_size, hidden_size) # 第一层 self.relu nn.ReLU() self.fc2 nn.Linear(hidden_size, num_classes) # 输出层 def forward(self, x): x self.flatten(x) # 展平[batch, 3, 32, 32] → [batch, 3072] x self.fc1(x) # 线性变换[batch, 3072] → [batch, 128] x self.relu(x) # 激活函数 x self.fc2(x) # 输出层[batch, 128] → [batch, 10] return x # 初始化模型 model MLP() device torch.device(cuda if torch.cuda.is_available() else cpu) model model.to(device) # 将模型移至GPU如果可用 from torchsummary import summary # 导入torchsummary库 print(\n模型结构信息) summary(model, input_size(3, 32, 32)) # CIFAR-10 彩色图像3×32×322.3 模型定义与batchsize的关系实际定义中输入图像还存在batchsize这一维度在 PyTorch 中模型定义和输入尺寸的指定不依赖于 batch_size无论设置多大的 batch_size模型结构和输入尺寸的写法都是不变的。class MLP(nn.Module): def __init__(self): super().__init__() self.flatten nn.Flatten() # nn.Flatten()会将每个样本的图像展平为 784 维向量但保留 batch 维度。 self.layer1 nn.Linear(784, 128) self.relu nn.ReLU() self.layer2 nn.Linear(128, 10) def forward(self, x): x self.flatten(x) # 输入[batch_size, 1, 28, 28] → [batch_size, 784] x self.layer1(x) # [batch_size, 784] → [batch_size, 128] x self.relu(x) x self.layer2(x) # [batch_size, 128] → [batch_size, 10] return x三、显存占用的主要组成部分昨天说到了在面对数据集过大的情况下由于无法一次性将数据全部加入到显存中所以采取了分批次加载这种方式。即一次只加载一部分数据保证在显存的范围内。那么显存设置多少合适呢如果设置的太小那么每个batchsize的训练不足以发挥显卡的能力浪费计算资源如果设置的太大会出现OOTout of memory显存一般被以下内容占用模型参数与梯度模型的权重Parameters和对应的梯度Gradients会占用显存尤其是深度神经网络如 Transformer、ResNet 等一个 1 亿参数的模型如 BERT-base单精度float32参数占用约 400MB1e8×4Byte加上梯度则翻倍至 800MB每个权重参数都有其对应的梯度。部分优化器如 Adam会为每个参数存储动量Momentum和平方梯度Square Gradient进一步增加显存占用通常为参数大小的 2-3 倍其他开销。oom处理方案下面以手写数据集为例from torch.utils.data import DataLoader # 定义训练集的数据加载器并指定batch_size train_loader DataLoader( datasettrain_dataset, # 加载的数据集 batch_size64, # 每次加载64张图像 shuffleTrue # 训练时打乱数据顺序 ) # 定义测试集的数据加载器通常batch_size更大减少测试时间 test_loader DataLoader( datasettest_dataset, batch_size1000, shuffleFalse )3.1 模型参数与梯度FP32 精度参数总量101,770 个参数Adam3.3数据批量batch_size的显存占用3.4.前向/反向传播中间变量以SGD为例此时其他参数占用固定batchsize会影响显存占用1字节Byte 8位bit是计算机存储的最小寻址单位。位bit是二进制数的最小单位0或1例如0b1010表示4位二进制数。1KB1024字节1MB1024KB1,048,576字节3.2优化器状态SGDSGD优化器不存储额外动量因此无额外显存占用。SGD 随机梯度下降最基础的优化器直接沿梯度反方向更新参数。参数更新公式w w - learning_rate * gradientAdam优化器自适应学习率优化器结合了动量Momentum和梯度平方的指数移动平均。每个参数存储动量m和平方梯度v占用约101,770 × 8 Byte ≈ 806 KB动量m每个参数对应一个动量值数据类型与参数相同float32占用 403 KB。梯度平方v每个参数对应一个梯度平方值数据类型与参数相同float32占用 403 KB。单张图像尺寸1×28×28通道×高×宽归一化转换为张量后为float32类型单张图像显存占用1×28×28×4 Byte 3,136 Byte ≈ 3 KB批量数据占用batch_size × 单张图像占用例如batch_size64时数据占用为64×3 KB ≈ 192 KBbatch_size1024时数据占用为1024×3 KB ≈ 3 MB对于两层MLP中间变量如layer1的输出占用较小batch_size×128维向量batch_size×128×4 Byte batch_size×512 Byte例如batch_size1024时中间变量约512 KB在 PyTorch 中在使用DataLoader加载数据时如果不指定batch_size参数默认值是1即每次迭代返回一个样本。这与一次性使用全部数据进行训练是完全不同的概念。如果想要一次性使用全部数据进行训练需要手动将batch_size设置为数据集的大小但对于大型数据集这样做通常会导致内存不足因为一次性将所有数据加载到内存中可能会超出硬件的内存限制。大规模数据时通常从16开始测试然后逐渐增加确保代码运行正常且不报错直到出现 内存不足OOM报错 或训练效果下降此时选择略小于该值的 batch_size。训练时候搭配 nvidia-smi 监控显存占用合适的 batch_size 硬件显存允许的最大值 × 0.8预留安全空间并通过训练效果验证调整。补充说明 batchsize对于训练的影响在深度学习中使用较大的 batch_size批量大小相比单样本训练batch_size1有以下核心优势并行计算能力最大化减小训练时间且大幅减少更新次数梯度方向更准确单样本训练的梯度仅基于单个数据点可能包含大量噪声尤其是数据分布不均或存在异常值时。大 batch_size 的梯度是多个样本的平均值能抵消单个样本的随机性梯度方向更接近真实分布的 “全局最优方向”。会让训练过程更稳定波动更小浙大疏锦行
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

上海企业网站设计公司电话检测网站的seo效果

目录: 博主介绍: 完整视频演示: 系统技术介绍: 后端Java介绍 前端框架Vue介绍 具体功能截图: 部分代码参考: Mysql表设计参考: 项目测试: 项目论文:​ 为…

张小明 2025/12/26 2:49:31 网站建设

新手学做网站 视频百度网盘外国人做那个视频网站

Next.js缓存终极实战指南:从诊断到彻底解决 【免费下载链接】next.js The React Framework 项目地址: https://gitcode.com/GitHub_Trending/next/next.js 你是否遇到过这样的困境:本地开发一切正常,部署到生产环境后却出现样式错乱、…

张小明 2025/12/26 2:47:48 网站建设

阿城区建设小学网站网络推广阶段策划

华人数学家对现代数学核心问题的系统性攻克:一项深度研究报告备注:本文由智谱生成,仅供学习和参考。引言现代数学的发展史,是一部由全人类智慧共同谱写的宏伟史诗。在这部史诗中,华人数学家的角色经历了从早期参与者到…

张小明 2025/12/26 2:46:39 网站建设

哪里可以建网站购物节优惠卷网站怎么做

TikZ科学绘图完全指南:从零部署到高效制图全流程 【免费下载链接】tikz Random collection of standalone TikZ images 项目地址: https://gitcode.com/gh_mirrors/tikz/tikz 在学术研究和技术文档创作中,专业的概念图和示意图往往能让复杂理论变…

张小明 2025/12/26 2:46:05 网站建设

百姓网网站建设wps连接wordpress

第一章:Open-AutoGLM自适应优化的核心理念Open-AutoGLM 是一种面向大语言模型训练与推理过程的自适应优化框架,其核心理念在于通过动态感知计算负载、数据分布及硬件资源状态,实现模型参数更新策略与执行路径的实时调优。该框架摒弃了传统静态…

张小明 2025/12/26 2:45:32 网站建设