建设网站需要学习什么企业网站 设计

张小明 2026/1/2 12:24:26
建设网站需要学习什么,企业网站 设计,深圳制作小程序,自己做网站帮别人卖东西本文记录了从PyTorch入门到成功实现MNIST手写数字分类#xff08;准确率达97%#xff09;的完整过程#xff0c;涵盖数据集认知、代码搭建、核心疑问解答及训练优化等关键环节#xff0c;适合刚接触PyTorch的新手参考学习。一、开篇#xff1a;MNIST数据集与核心目标我们的…本文记录了从PyTorch入门到成功实现MNIST手写数字分类准确率达97%的完整过程涵盖数据集认知、代码搭建、核心疑问解答及训练优化等关键环节适合刚接触PyTorch的新手参考学习。一、开篇MNIST数据集与核心目标我们的核心任务是用PyTorch搭建多层感知器MLP完成MNIST手写数字的分类任务。首先得明确MNIST数据集的基础属性——这是一个经典的手写数字识别数据集包含60000张训练图和10000张测试图所有图片均为28×28像素的灰度图标签为0-9的整数对应手写数字。新手常见第一个疑问下载数据集后为什么会有多个文件其实这些是MNIST的原始压缩包.gz后缀和解压后的原始文件分为训练集/测试集的图片文件和标签文件属于PyTorch自动下载解压的正常现象无需手动处理。二、核心代码搭建从数据加载到模型训练我们逐步搭建了完整的训练流程从库导入到最终训练测试每一步都针对新手常见疑问做了详细解析。2.1 完整可运行代码优化后最终版# 导入所需库 import torch from torch import nn from torch.utils.data import DataLoader from torchvision import datasets, transforms # 加载数据时修改transform增加Normalize transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) # MNIST的均值和标准差官方推荐值 ]) # 1. 加载MNIST数据集 training_data datasets.MNIST( rootdata, trainTrue, downloadTrue, # transformtransforms.ToTensor() transformtransform ) test_data datasets.MNIST( rootdata, trainFalse, downloadTrue, # transformtransforms.ToTensor() transformtransform ) # 2. 创建DataLoader数据加载器 batch_size 64 train_dataloader DataLoader(training_data, batch_sizebatch_size,shuffleTrue) test_dataloader DataLoader(test_data, batch_sizebatch_size) # 3. 判断设备CPU/GPU device cuda if torch.cuda.is_available() else mps if torch.backends.mps.is_available() else cpu print(fUsing {device} device) # 4. 定义神经网络模型的类 class NeuralNetwork(nn.Module): def __init__(self): super().__init__() self.flatten nn.Flatten() # 展开28×28的图片(官方图片集固定的28*28像素为一维向量 self.hidden1 nn.Linear(28 * 28, 128) # 输入层→隐藏层1本质是矩阵运算这里我们的批次是64因此实际进行64行28*28列作为矩阵传入第一层计算 self.hidden2 nn.Linear(128, 256) # 隐藏层1→隐藏层2 self.out nn.Linear(256, 10) # 隐藏层2→输出层10类数字 # 前向传播方法名规范为forward小写 def forward(self, x): x self.flatten(x) x self.hidden1(x) # x torch.sigmoid(x) # 激活函数 x torch.relu(x) # 替换sigmoid为relu x self.hidden2(x) # x torch.sigmoid(x) # 激活函数 x torch.relu(x) # 替换sigmoid为relu x self.out(x) return x neural神经 batch批次 # 初始化类并移动到设备 model NeuralNetwork().to(device) print(model) # 5. 定义训练函数 def train(dataloader, model, loss_fn, optimizer): model.train() # 切换到训练模式 batch_size_num 1 # 统计batch数量 for X, y in dataloader: # dataloader是函数形参调用时传入train_dataloader/test_dataloader迭代返回批次级数据X为批次图片张量(shape[batch_size,1,28,28])y为批次标签张量(shape[batch_size])对应批次内所有样本的图片和标签 # 数据移动到设备 X, y X.to(device), y.to(device) # 前向传播计算预测值 pred model(X) # 可省略.forwardmodel(X)会自动调用forward loss loss_fn(pred, y) # 计算损失 # 反向传播更新参数 optimizer.zero_grad() # 梯度清零 loss.backward() # 反向传播计算梯度原代码中Loss大写修正为loss optimizer.step() # 更新模型参数 # 每100个batch打印一次损失 loss_value loss.item() if batch_size_num % 100 0: print(fLoss: {loss_value:7f} [batch: {batch_size_num}]) batch_size_num 1 # 6. 定义测试函数 def test(dataloader, model, loss_fn): size len(dataloader.dataset) # 测试集总样本数 num_batches len(dataloader) # 测试集batch数量 model.eval() # 切换到测试模式 test_loss, correct 0, 0 # 测试时关闭梯度计算节省资源 with torch.no_grad(): for X, y in dataloader: X, y X.to(device), y.to(device) pred model(X) test_loss loss_fn(pred, y).item() # 累计损失 # 计算正确预测数取预测最大值对应的索引 correct (pred.argmax(1) y).type(torch.float).sum().item() # 计算平均损失和准确率 test_loss / num_batches correct / size print(fTest result: \n Accuracy: {(100 * correct):0.1f}%, Avg loss: {test_loss:8f} \n) # 7. 初始化损失函数和优化器 loss_fn nn.CrossEntropyLoss() # 交叉熵损失适用于分类任务 # optimizer torch.optim.SGD(model.parameters(), lr0.01) # SGD优化器 # 原代码的optimizer替换为Adam optimizer torch.optim.Adam(model.parameters(), lr0.001) # Adam默认lr0.001即可 # 8. 执行训练和测试 # print(开始训练) # train(train_dataloader, model, loss_fn, optimizer) # 训练一轮 # 原代码只调用了1次train改成循环10轮 epochs 10 # 训练10轮 for t in range(epochs): print(f\n训练轮数 {t1}/{epochs}) train(train_dataloader, model, loss_fn, optimizer) test(test_dataloader, model, loss_fn) # 每轮训练后测试 print(训练完成) print(开始测试) test(test_dataloader, model, loss_fn)运行结果2.2 关键代码解析新手必看1datasets.MNIST数据集加载神器datasets.MNIST是PyTorch封装好的数据集加载工具核心作用是跳过“下载-解压-解析”的繁琐步骤直接得到可使用的Dataset对象。关键参数说明参数名核心作用常用取值root指定数据集保存/读取目录rootdata当前目录下创建data文件夹train选择加载训练集/测试集trainTrue训练集、trainFalse测试集download本地无数据时自动下载首次使用设为True后续设为Falsetransform图片预处理转Tensor标准化提升训练效果2DataLoader批量训练的核心代码train_dataloader DataLoader(training_data, batch_size64, shuffleTrue)核心作用是将零散的Dataset样本打包成批次张量适配神经网络批量训练逻辑batch_size64每批包含64个样本生成形状为[64,1,28,28]的批次图片张量和[64]的批次标签张量shuffleTrue训练前打乱样本顺序避免模型记住样本顺序导致泛化能力差迭代使用通过for X, y in dataloader遍历X为批次图片y为对应批次标签形参dataloader可接收train_dataloader或test_dataloader。3批次张量高效训练的关键批次张量是将多个样本的图片/标签合并成的大张量核心优势是利用矩阵运算实现批量计算单张图片张量[1,28,28]1通道28×28像素批次图片张量64个样本[64,1,28,28]新增批次维度优势神经网络通过一次矩阵运算就能完成64张图片的前向传播效率远高于逐个计算。4nn.Module神经网络的骨架自定义模型必须继承nn.Module它是PyTorch所有神经网络模块的基类提供参数管理、GPU适配、前向传播支持等核心功能并非具体模型__init__方法初始化网络层如nn.Flatten展平层、nn.Linear全连接层需调用super().__init__()启用父类功能forward方法定义前向传播逻辑调用model(X)时会自动执行无需手动调用。5.item()标量张量转普通数值训练中计算的损失loss是标量张量shape[]无法直接用于Python格式化输出通过loss.item()可剥离张量的设备、梯度等额外信息转成普通float数值。三、训练优化从30%到97%的关键调整初始训练准确率仅30%左右通过以下关键调整第六轮训练准确率就达到97%替换激活函数将sigmoid改为ReLU解决深层网络梯度消失问题让模型快速收敛增加训练轮数从1轮改为10轮让模型充分学习数据特征训练数据打乱在DataLoader中添加shuffleTrue提升模型泛化能力优化器调整从SGD改为Adam自适应学习率加速收敛数据标准化添加transforms.Normalize让模型更快收敛。四、核心疑问解答新手避坑指南Q1为什么img, label training_data[i]能将一个值拆成两个变量training_data[i]返回的是包含两个元素的元组图片数据标签这是Python的元组解包语法会自动将元组中的两个值按顺序赋值给img和label等价于img training_data[i][0]和label training_data[i][1]。Q2怎么确认MNIST图片是28×28像素28×28是MNIST数据集的官方固有属性可通过代码验证取单个样本img training_data[0][0]打印img.shape会输出torch.Size([1,28,28])明确显示图片尺寸为28×28。Q3输入层接收28×28特征怎么同时训练64张图片通过nn.Flatten()将64张图片的[64,1,28,28]张量展平为[64,784]78428×28输入层nn.Linear(784,128)通过矩阵运算64×784的输入矩阵 × 784×128的权重矩阵一次性完成64张图片的特征转换实现批量训练。Q4nn.Module和感知器的关系感知器是单个神经元的计算逻辑如nn.Linear层的一个神经元而nn.Module是承载感知器/网络层的骨架提供参数管理、GPU计算等运行能力两者是“被承载者”和“承载框架”的关系并非等价关系。五、总结与成果本次从MNIST数据集认知开始逐步完成了数据加载、模型搭建、训练测试全流程解决了新手常见的语法疑问和训练优化问题最终通过多层感知器实现了97%的分类准确率。核心收获掌握PyTorch核心工具datasets.MNIST、DataLoader、nn.Module的使用逻辑理解批量训练、批次张量的核心原理掌握神经网络训练优化的关键技巧激活函数、优化器、数据预处理等。对于刚接触PyTorch的新手来说从疑问重重到实现高准确率训练每一步都是成长。后续可尝试调整batch_size、学习率等参数进一步优化模型性能或探索CNN等更复杂的网络结构在MNIST上的表现。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

易读网站建设公司网站建设的环境分析

综合执法办案平台是智慧城市框架下,依托物联网、云计算、多网融合等现代化技术,运用数字基础资源、多维信息感知、协同工作处置、智能化辅助决策分析等手段,形成具备高度感知、互联互通、智能的综合执法管理新模式。随着城市管理的不断升级&a…

张小明 2025/12/31 1:18:20 网站建设

网站直接登陆wordpress站长平台怎么添加网站

Windows 10 桌面与窗口管理实用指南 在使用 Windows 10 系统时,掌握一些实用的操作技巧能让我们的工作和娱乐更加高效和便捷。下面将为大家详细介绍 Windows 10 中关于开始菜单、文件资源管理器以及窗口管理的相关内容。 1. 开始菜单操作 开始菜单是我们访问系统功能和程序…

张小明 2025/12/31 0:30:27 网站建设

蝌蚪窝一个释放做网站wordpress wpadmin

大模型Agent是基于大语言模型的智能实体,具备感知、决策和执行能力。其架构由四大核心模块组成:规划(Planning)负责任务拆解与策略制定;记忆(Memory)存储短期和长期信息;工具(Tools)扩展感知与操作能力;行动(Action)实…

张小明 2026/1/1 8:28:53 网站建设

官方网站建设条件正规漫画网站开发流程

正文 这下是真服了。第一天让我见识了省分行工作强度,第二天给我说想借调我,第三天又跟我说我可能会被撵去珠海? 今天给运管处修电脑,他们问我哪来的,我说了,然后她们跟我说,我那个地方好像要开…

张小明 2026/1/1 4:30:28 网站建设

申请完域名如何建网站网站注册备案查询

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个性能对比工具,比较传统方法和AI辅助方法解决metadata lock问题的效率。功能包括:1. 模拟metadata lock场景;2. 记录手动排查(使用SHOW P…

张小明 2025/12/31 19:28:48 网站建设

鞍山工程建设信息网站外卖网站的建设与推广

OpenCore Legacy Patcher实战指南:让旧Mac完美升级新版系统 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 如果你手中的Mac设备硬件依然良好,却因…

张小明 2025/12/31 14:25:53 网站建设