news 2026/4/18 10:39:01

深度学习系列之第六课卷积神经网络_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/4/18 2:01:18

深度学习系列之第七课卷积神经网络_CNN_调整学习率

目录 简介 一、调整学习率 1.有序调整学习率 1.1StepLR(等间隔调整学习率) 1.2MultiStepLR(多间隔调整学习率) 1.3 ExponentialLR (指数衰减调整学习率) 1.4CosineAnnealing (余弦退火函数调整学习率) 2.自适应调整 2.1ReduceLROnPlateau (根据指标调整学习率) 3.自…

作者头像 李华
网站建设 2026/4/18 2:02:35

Java SpringBoot+Vue3+MyBatis 乐享田园系统系统源码|前后端分离+MySQL数据库

摘要 随着城市化进程的加快,人们对田园生活的向往逐渐增强,休闲农业和乡村旅游成为现代人放松身心的重要方式。传统的田园管理系统往往功能单一、交互性差,难以满足用户多样化需求。乐享田园系统旨在通过信息化手段优化田园资源管理&#xff…

作者头像 李华
网站建设 2026/4/18 2:08:01

Z-Image-Turbo产品摄影生成实战:咖啡杯场景参数设置详解

Z-Image-Turbo产品摄影生成实战:咖啡杯场景参数设置详解 1. 为什么选Z-Image-Turbo做产品图?真实体验告诉你 你是不是也遇到过这些情况:拍咖啡杯要反复布光三小时,修图调色又花掉一整天;找摄影师报价动辄上千&#x…

作者头像 李华
网站建设 2026/4/18 2:03:25

Z-Image-Turbo媒体行业落地:新闻配图快速生成部署教程

Z-Image-Turbo媒体行业落地:新闻配图快速生成部署教程 1. 为什么新闻编辑需要Z-Image-Turbo 每天早上六点,编辑部的灯光已经亮起。记者刚发回一条突发新闻,标题是“城市地铁新线开通首日客流破纪录”,但配图还空着——摄影记者还…

作者头像 李华
网站建设 2026/4/17 8:03:45

高效BetterNCM安装工具:网易云音乐功能扩展的智能解决方案

高效BetterNCM安装工具:网易云音乐功能扩展的智能解决方案 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为音乐客户端功能受限而困扰?这款工具让插件管理…

作者头像 李华