Pytorch学习 day14(模型的验证步骤)

如何利用已经训练好的模型,验证它的结果,步骤如下:

步骤一:加载测试输入并更改为合适尺寸

  • 保存图片到指定文件夹下,注意是否为同级目录
  • 注意:返回上一级目录为“…/xxx"
  • 有时,我们自己的输入数据的尺寸不满足模型的输入尺寸,可以使用Resize() 进行变换
  • 如果为png格式的图片,则它除了RGB三通道外,还有一个透明度通道,需要使用convert(),来去除透明度通道
  • 代码如下:
import torch
from PIL import Image
from torchvision import transformsimage_path = 'images/dog.png'
image = Image.open(image_path)
print(image)    # <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=216x157 at 0x22375C91010>
# 由于该png图片为RGBA四通道和216*157,需要将它转换为RGB三通道和32*32
image = image.convert('RGB')
# 使用compose函数将多个transforms组合在一起
transform = transforms.Compose([transforms.Resize((32, 32)), transforms.ToTensor()])
image = transform(image)
print(image.size())    # torch.Size([3, 32, 32])

步骤二:加载训练好的模型

  • 使用torch.load() 加载训练好的模型
  • 由于训练模型使用的是GPU,所以在输入数据时需要将数据转换为GPU的格式
  • 由于训练模型时的数据为4维,且第一维度为batch_size,所以需要使用reshape()将输入图片数据转换为4维
  • 代码如下:
tudui = torch.load('pth/module29.pth')
# 由于训练模型使用的是GPU,所以在输入数据时需要将数据转换为GPU的格式
image = image.cuda()
# 由于训练模型时的数据为4维,且第一维度为batch_size,所以需要将输入数据转换为4维
image = torch.reshape(image, (1, 3, 32, 32))

步骤三:开始测试

  • 将模型设置为测试模式
  • 使用with torch.no_grad(): 关闭梯度计算,提高计算效率
  • 使用argmas(1),让它横向输出概率最高的下标号
  • 代码如下:
# 将模型设置为测试模式
tudui.eval()
# 使用torch.no_grad()上下文管理器,关闭梯度计算
with torch.no_grad():output = tudui(image)print(output.argmax(1))# 输出结果:
# <PIL.PngImagePlugin.PngImageFile image mode=RGBA size=130x138 at 0x187D30E17D0>
# torch.Size([3, 32, 32])
# tensor([5], device='cuda:0')
  • 模型的各类别下标号如下:
    在这里插入图片描述
  • 输入图片如下:
    请添加图片描述

注意事项

  • 当我们在没有GPU的环境中加载使用cuda训练的模型时,需要指定该模型的map_location,代码如下:
tudui = torch.load('pth/module29.pth', map_location='cpu')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端React篇之React的生命周期有哪些?

目录 React的生命周期有哪些&#xff1f;挂载阶段&#xff08;Mounting&#xff09;更新阶段&#xff08;Updating&#xff09;卸载阶段&#xff08;Unmounting&#xff09;错误处理阶段&#xff08;Error Handling&#xff09; React常见的生命周期React主要生命周期 React的生…

每日一练:LeeCode-14、最长公共前缀【字符串+最值判定】

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl"示例 2&#xff1a; …

27-Java MVC 模式

Java空对象模式 实现范例 MVC模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff09; 模式MVC模式用于应用程序的分层开发 Model&#xff08;模型&#xff09; - 模型代表一个存取数据的对象或 JAVA POJO 它也可以带有逻辑&#xff0c;在数据变化时更新控制…

渔业安全生产综合管理指挥系统-航迹数据优化方案

文章目录 引言I 轨迹数据模型II 轨迹信息索引III 数据同步方案3.1 多服务器多表同步3.2 增量数据同步3.3 执行IV 配置ESV 团队建设5.1 前端(web GIS)5.2 后端(Java)see also引言 背景: 目前系统查询轨迹数据比较慢的原因是没有进行读写分离,轨迹数据的查询和写入都是SQL…

Linux查看mysql安装目录

在Linux系统中&#xff0c;MySQL的安装目录通常位于/usr/local/mysql或/opt/mysql目录下。这些目录是MySQL在Linux系统中默认的安装目录&#xff0c;用户可以在这些目录下找到MySQL的所有文件和配置信息。 要查看MySQL的安装目录&#xff0c;可以使用以下命令&#xff1a; wh…

踏上机器学习的征程:探索基础概念与学习模式

摘要: 机器学习是当今科技领域最具前沿和应用价值的技术之一,它正在改变我们对数据的理解和利用方式。本文将引导读者深入了解机器学习的基本概念,包括监督学习、无监督学习和半监督学习等,并通过生动的例子解释这些概念,帮助读者迈出学习机器学习的第一步。 导言: 随着…

Ubuntu 如何安装 Beyond Compare?

Ubuntu20.04安装Beyond Compare 4.3.7 一、官网下载方式一&#xff1a;方法二&#xff1a;使用 .deb 包安装 二、安装相关依赖和bcompare三、破解常见错误解决方法 ) 文件比较工具Beyond Compare是一套由Scooter Software推出的文件比较工具。主要用途是对比两个文件夹或者文件…

AST解web控制流平坦化

此代码可以解决大部分 while if else 控制流平坦化原理&#xff1a; 先将 if 语句转为 switch 语句&#xff0c;再将 switch 分支合并&#xff0c;最后删除已合并的分支&#xff08;具体看代码&#xff09; 实现效果图 首先安装依赖&#xff1a; npm install babel/parser npm…

指针基础 - golang版

文章目录 1、指针2、基础语法2.1 定义指针2.2 取地址操作符 &2.3 解引用操作符 * 3、实战用法3.1 指针作为函数参数3.2 指针和结构体3.3 指针和接收者 1、指针 变量是存储值的地方&#xff1b;指针的值是一个变量的地址&#xff1b;不是所有的值都有地址&#xff0c;但是所…

【K8s】如何使用Kubernetes Ingress: Contour

使用Kubernetes Ingress: Contour 目录 使用Kubernetes Ingress: Contour没有 Ingress 控制器的情况Ingress 控制器的优势部署 Contour看到 Contour 在运行中总结推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战在处理Kubernetes时会遇到…

Java后端八股-------并发编程

图中的 synchronized方法如果没有锁&#xff0c;那么可能会有超卖&#xff0c;数据错误等情况。 加锁之后会按顺序售卖。 synchronized的底层是monitor。 线程没有竞争关系的时候&#xff0c;引入了轻量级锁&#xff0c;当需要处理竞争关系的时候一定要用到重量级锁(线程的…

数据挖掘与大数据的结合

随着大数据技术的不断发展和普及&#xff0c;数据挖掘在大数据环境下的应用也变得更加广泛和深入。以下将探讨大数据技术对数据挖掘的影响&#xff0c;以及如何利用大数据技术处理海量数据并进行有效的数据挖掘&#xff0c;同时分析大数据环境下的数据挖掘挑战和解决方案。 1.…

【Flutter】IOS运行工程二次启动崩溃问题。

问题 IOS14设备&#xff0c;切后台划掉&#xff0c;二次启动崩溃&#xff0c;看crash日志 一直提示第三方plugin注册问题。 一个一个尝试注掉&#xff0c;发现依然不行&#xff0c;创建了一个原生app&#xff0c;运行复现发现没问题&#xff0c;大概率是flutter的问题。 结论…

【RK32388 Android10, UNIK 4G模块导致usb hub出现 EMI】

文章目录 【RK32388 Android10&#xff0c; UNIK 4G模块导致usb hub出现 EMI 】背景调试过程解决相机掉线id变号发现EMI 出现 【RK32388 Android10&#xff0c; UNIK 4G模块导致usb hub出现 EMI 】 背景 在Android10 unik 的版本提测中&#xff0c;发现了一个问题&#xff0c…

Golang高效流控实践

流控对于构建高可靠弹性系统至关重要&#xff0c;本文介绍了Golang内置的流控组件&#xff0c;通过该组件就可以打造适合各种业务场景的流控系统。原文: Rate Limiting in Go: Controlling Traffic with Efficiency[1] Jon Cellier Unsplash 导言 流控(Rate limiting)是构建可扩…

Javaweb day17 day18 day19

mysql-DDL 数据库操作 写法 客户端工具 &#xff08;也可以使用idea&#xff09; 表 写法 约束 数据类型 案例 写法 表的查询修改删除 写法 删除

RTC的Google拥塞控制算法 rmcat-gcc-02

摘要 本文档描述了使用时的两种拥塞控制方法万维网&#xff08;RTCWEB&#xff09;上的实时通信&#xff1b;一种算法是基于延迟策略&#xff0c;一种算法是基于丢包策略。 1.简介 拥塞控制是所有共享网络的应用程序的要求互联网资源 [RFC2914]。 实时媒体的拥塞控制对于许…

Lua中文语言编程源码-第四节,更改linit.c初始化库函数, 使Lua加载中文库关键词(与所有的基础库相关)

源码已经更新在CSDN的码库里&#xff1a; git clone https://gitcode.com/funsion/CLua.git 在src文件夹下的linit.c初始化库的函数&#xff0c;用于lua.c和其他客户端。 增加加载中文库宏名列表&#xff0c;保留英文库宏名列表。 原始的代码为&#xff1a; static const …

​​SQLiteC/C++接口详细介绍之sqlite3类(十)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;九&#xff09; 下一篇&#xff1a;​​SQLiteC/C接口详细介绍之sqlite3类&#xff08;十一&#xff09; 30.sqlite3_enable_load_extension&#x…

venv uvicorn python 虚拟服务器外网无法访问

python -m venv .venv source ./.venv/bin/activate pip install -r requirements.txt ./run.sh source ./.venv/bin/activate uvicorn main:app --reload 虚拟web服务器外网访问控制台启动命令用以下代码启动 uvicorn main:app --host 0.0.0.0 --port 8501 --reload 启动到后…