news 2026/7/25 1:37:44

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

老款Mac蓝牙失效修复:基于OpenCore Legacy Patcher的驱动适配方案

老款Mac蓝牙失效修复:基于OpenCore Legacy Patcher的驱动适配方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 症状自查清单 在开始修复前,请确…

作者头像 李华
网站建设 2026/7/20 10:00:39

告别色彩失真:用novideo_srgb实现专业级显示器色彩校准

告别色彩失真:用novideo_srgb实现专业级显示器色彩校准 【免费下载链接】novideo_srgb Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles 项目地址: https://gitcode.com/gh_mirrors/no/novideo_srgb …

作者头像 李华
网站建设 2026/7/18 15:36:43

阿里Qwen3Guard-Gen-8B上下文理解:长文本审核部署案例

阿里Qwen3Guard-Gen-8B上下文理解:长文本审核部署案例 1. 为什么需要专门的长文本安全审核模型? 你有没有遇到过这样的情况: 用大模型生成客服回复,结果输出里悄悄夹带了诱导性话术; 让AI写一段产品宣传文案&#xf…

作者头像 李华
网站建设 2026/7/20 20:47:40

IAR软件链接脚本配置全面讲解与实例

以下是对您提供的博文内容进行 深度润色与结构重构后的技术文章 。我已严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、专业、有“人味”; ✅ 摒弃模板化标题(如“引言”“总结”),代之以逻辑递进…

作者头像 李华