news 2026/6/10 18:06:15

深度学习系列之第六课卷积神经网络_CNN_如何保存和使用最优模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度学习系列之第六课卷积神经网络_CNN_如何保存和使用最优模型

简介

上一篇博客我们使用自己的数据集进行训练,生成了自己数据集的train.txt和test.txt文本,也说明了什么是数据增强。今天我们就来看看如何保存和使用最优模型。
深度学习系列之第五课卷积神经网络_CNN_如何训练自己的数据集(暨食物分类案例)

一、保存最优模型

对于训练结果,我们使用的都是的都是最后一轮的结果,但是最后一轮并不是训练出最好的模型,使用我们要把这个最好的模型保存下来。

1. 导入必要的库
importtorchfrom torch.utils.dataimportDataLoader,Datasetfrom PILimportImagefrom torchvisionimporttransforms# 对数据进行处理importnumpyas np from torchimportnn
  • torch: PyTorch 深度学习框架的核心库
  • DataLoader, Dataset: 用于数据加载和处理的工具类
  • Image: 用于图像读取的 PIL 库
  • transforms: 用于图像预处理的工具
  • numpy: 用于数值计算的库
  • nn: PyTorch 的神经网络模块
2. 图像预处理定义
data_transforms={# 字典,存储不同阶段的图像处理方式'train':transforms.Compose([# 组合多个变换transforms.Resize([300,300]),# 图像变换大小transforms.RandomRotation(45),# 图片随机旋转(-4545)transforms.CenterCrop(256),# 从中心开始裁剪到256x256transforms.RandomHorizontalFlip(p=0.5),#50%概率水平翻转transforms.RandomVerticalFlip(p=0.5),#50%概率垂直翻转transforms.ToTensor(),# 转换为Tensor格式transforms.Normalize([0.485,0.456,0.486],[0.229,0.224,0.225])# 归一化]),'valid':transforms.Compose([transforms.Resize([256,256]),transforms.ToTensor(),transforms.Normalize([0.485,0.456,0.486],[0.229,0.224,0.225])]),}

定义了训练集和验证集的图像预处理流程,训练集使用了更多的数据增强技术来提高模型的泛化能力。

3. 自定义数据集类
classfood_dataset(Dataset):# 继承Dataset类 def__init__(self,file_path,transform=None):self.file_path=file_path self.imgs=[]self.labels=[]self.transform=transform # 读取文件列表和标签withopen(file_path,'r')as f:samples=[x.strip().split(' ')forx in f.readlines()]forimg_path,label in samples:self.imgs.append(img_path)self.labels.append(label)def__len__(self):# 返回数据集大小returnlen(self.imgs)def__getitem__(self,idx):# 读取图像 image=Image.open(self.imgs[idx])ifself.transform:# 应用预处理 image=self.transform(image)# 处理标签 label=self.labels[idx]label=torch.from_numpy(np.array(label,dtype=np.int64))returnimage,label

自定义数据集类,用于加载食品图像数据和对应的标签,实现了 PyTorch 要求的三个核心方法:

  • __init__: 初始化数据集,读取图像路径和标签
  • __len__: 返回数据集样本数量
  • __getitem__: 根据索引返回单个样本(图像和标签)
4. 数据加载器
# 创建数据集实例 train_data=food_dataset(file_path='train.txt',transform=data_transforms['train'])test_data=food_dataset(file_path='test.txt',tr
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:01:13

YOLOv9预装权重文件在哪?镜像使用小技巧

YOLOv9预装权重文件在哪?镜像使用小技巧 你刚拉起 YOLOv9 官方版训练与推理镜像,终端里敲下 conda activate yolov9,cd 进 /root/yolov9,准备跑通第一张检测图——却突然卡住:--weights 参数该填什么路径?…

作者头像 李华
网站建设 2026/6/9 19:56:17

verl实战分享:我是如何用它完成大模型对齐训练的

verl实战分享:我是如何用它完成大模型对齐训练的 1. 为什么选verl:一个真正为LLM对齐而生的RL框架 你有没有试过用PPO训练大模型,跑着跑着显存就爆了?或者刚搭好vLLM做rollout,一接上FSDP训练就卡在通信同步上&#…

作者头像 李华
网站建设 2026/6/9 17:40:39

解锁3D模型下载终极方案:零代码跨平台浏览器脚本全解析

解锁3D模型下载终极方案:零代码跨平台浏览器脚本全解析 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 问题导入:当3D创作者遇到下载壁垒 …

作者头像 李华
网站建设 2026/6/10 10:33:04

VibeThinker-1.5B-WEBUI快速上手:从零部署到调用详细步骤

VibeThinker-1.5B-WEBUI快速上手:从零部署到调用详细步骤 1. 这个模型到底能做什么?先说清楚再动手 你可能已经见过太多“小而美”的AI模型宣传,但VibeThinker-1.5B不一样——它不是概念验证,而是真正在数学和编程任务上跑赢大模…

作者头像 李华
网站建设 2026/6/10 10:28:07

OpenCore Legacy Patcher:旧设备升级与系统兼容性解决方案

OpenCore Legacy Patcher:旧设备升级与系统兼容性解决方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 在科技快速迭代的今天,许多用户面临旧款…

作者头像 李华