Python与人工智能编程-基础与实验 课件 实验17 PyTorch的开发流程与模板_第1页
Python与人工智能编程-基础与实验 课件 实验17 PyTorch的开发流程与模板_第2页
Python与人工智能编程-基础与实验 课件 实验17 PyTorch的开发流程与模板_第3页
Python与人工智能编程-基础与实验 课件 实验17 PyTorch的开发流程与模板_第4页
Python与人工智能编程-基础与实验 课件 实验17 PyTorch的开发流程与模板_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PyTorch的开发流程与通用模板实验17课程学习目标掌握PyTorch的开发流程。学习如何使用PyTorch构建和训练简单的神经网络模型。PyTorch开发流程

1.准备数据读取数据,预处理、分析、可视化,划分训练集、验证集和测试集,封装成PyTorch数据加载器。2.定义模型使用torch.nn模块定义神经网络结构,包括层、激活函数、损失函数和优化器。4.评估模型使用torch.no_grad禁用梯度计算,评估模型性能,使用混淆矩阵、ROC曲线、AUC值分析模型。5.保存和加载模型使用torch.save和torch.load保存和加载模型参数或状态,以便跨设备或平台使用。3.训练模型使用torch.optim更新模型参数,torch.autograd自动计算梯度,遍历数据加载器,监控损失和准确率。PyTorch的通用模板在本实验中,我们将学习如何使用PyTorch的开发流程来构建和训练一个简单的人工神经网络模型,用于对手写数字进行分类。我们将使用PyTorch自带的MNIST数据集,它包含了60000张28x28的灰度图片,每张图片对应一个0到9的数字标签。1.导入库在开始实验之前,需要先导入PyTorch和其他需要用到的库,我们可以在Notebook的第一个单元格中输入以下的代码,并运行。2.准备数据属性描述数据集来源由YannLeCun、CorinnaCortes和ChristopherJ.C.Burges等人创建数据集类型图像数据集数据集规模60,000个训练图像和10,000个测试图像数据集样本包含0到9的手写数字图像,每个数字有多个不同版本的样本图像尺寸28x28像素图像通道灰度图像(单通道)标签每个图像都有一个与之关联的标签,表示图像中的数字数据集用途用于机器学习和深度学习任务,特别是手写数字识别数据集特点1.数据简单且易于使用,适用于入门级和教育用途2.已被广泛用于图像分类、深度学习模型评估和基准测试数据集分割数据集通常分为训练集和测试集,以进行模型的训练和评估数据集下载可以通过PyTorch、TensorFlow等深度学习框架自动下载和加载本实验中,我们将使用PyTorch自带的MNIST(ModifiedNationalInstituteofStandardsandTechnology)手写数据集,它包含了60000张28x28的灰度图片,每张图片对应一个0到9的数字标签。2.准备数据使用torchvision的datasets模块来下载和加载数据集,使用torch的utils.data模块创建数据加载器。2.准备数据使用len()函数来查看数据加载器的长度,它表示数据加载器包含的批次的数量。从运行结果可以看到,训练集的长度是938,表示它包含了938个批次,每个批次有64张图片和64个标签,总共有约60000张图片和60000个标签。2.准备数据使用matplotlib的imshow()函数来显示图片。例如,可以输入以下的代码来显示数据加载器的下一个批次的第一张图片和它的标签。3.定义模型使用PyTorch的torch.nn模块来定义一个简单的人工神经网络模型,包括以下5部分。3.定义模型4.训练模型模型的训练流程图如下:4.训练模型函数所属模块作用应用场景zero_grad()torch.optim清空优化器中的梯度缓存在每次梯度计算之前使用,以避免梯度累积backward()torch.autograd计算损失值的梯度在损失函数上调用,用于计算梯度step()torch.optim根据计算的梯度更新模型参数在梯度计算后调用,用于更新模型参数。item()Tensor获取Tensor中的标量值。从单元素张量中提取Python数值torch.max(tensor,dim)torch获取Tensor中的最大值和最大值的索引用于获取张量某维度的最大值及其索引位置。torch.sum(tensor)torch获取Tensor中的元素之和用于计算张量所有元素的累加和torch.eq(tensor1,tensor2)torch获取Tensor中的元素是否相等的布尔值比较两个张量的相等性,逐元素比较使用PyTorch的torch.optim模块和torch.autograd模块来实现模型的训练,其常用函数可参考左表。4.训练模型模型训练的代码和结果如下:4.训练模型模型训练的代码和结果如下:5.评估模型01遍历数据加载器获取每个批次的数据和标签02送入模型预测得到输出的预测概率03计算损失值送入损失函数,得到损失值04累加损失和正确预测累加每个批次的损失值和正确预测的数量05计算平均损失和准确率计算每一轮的平均测试损失值和测试准确率5.评估模型在该阶段不需要计算梯度,因此可以使用PyTorch的torch.no_grad上下文管理器来禁用梯度计算。这样可以减少内存占用并加快计算速度。使用with语句创建这个上下文管理器。在循环中,计算每个批次的损失和准确率,最后输出测试集的平均损失值和准确率。5.评估模型从结果可以看到,模型在测试集上的性能略优于训练集,这表明模型具有良好的泛化能力,没有出现明显的过拟合现象。训练集的损失值和准确率:6.保存和加载模型函数名称参数解释作用torch.save(obj,path)obj:要保存的对象,通常是模型的参数或状态字典path:文件的路径或文件对象将模型的参数或状态字典保存到指定的文件中torch.load(path)path:文件的路径或文件对象从指定的文件中加载模型的参数或状态字典通过torch.load()加载模型参数,恢复模型状态。torch.load()使用torch.save()保存模型参数,便于后续恢复训练或部署。torch.save()6.保存和加载模型保存和加载模型的参数:保存和加载模型的整个状态:6.保存和加载模型特性保存和加载模型参数(state_dict)保存和加载整个模型保存内容仅保存模型的参数(权重、偏置),不保存模型结构保存整个模型,包括模型结构和参数加载方式需要手动定义模型结构后再加载参数直接加载完整的模型,无需手动定义结构灵活性较高,可以调整或修改模型结构,只要参数匹配即可较低,模型结构和参数一同保存,不能轻易修改文件大小相对较小,因只保存参数相对较大,保存了结构和参数代码复杂度需要额外定义模型结构加载时不需要额外代码,结构和参数一同加载适用场景适合需要灵活调整模型结构或微调模型的场景适合需要完全恢复模型结构和参数的场景跨环境/版本兼容性较高,不同版本的PyTorch只要模型结构匹配即可加载兼容性较差,可能在不同版本的PyTorch中不兼容恢复模型的过程需要先创建模型结构,再加载参数直接加载整个模型,模型和参数同时恢复优点文件较小,适合微调和灵活调整模型,兼容性较好加载过程简单,适合快速恢复模型,省去手动定义结构缺点加载时需要手动定义模型结构,操作稍复杂文件较大,兼容性较差,修改模型结构不方便典型应用场景微调模型、模型结构变化时、迁移学习等完全恢复模型,部署模型进行推理时本节实验作业1.使用M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论