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

news2024/7/4 5:39:58

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

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

  • 保存图片到指定文件夹下,注意是否为同级目录
  • 注意:返回上一级目录为“…/xxx"
  • 有时,我们自己的输入数据的尺寸不满足模型的输入尺寸,可以使用Resize() 进行变换
  • 如果为png格式的图片,则它除了RGB三通道外,还有一个透明度通道,需要使用convert(),来去除透明度通道
  • 代码如下:
import torch
from PIL import Image
from torchvision import transforms

image_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.coloradmin.cn/o/1515058.html

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

相关文章

【QT+QGIS跨平台编译】之七十三:【QGIS_Analysis跨平台编译】—【错误处理:字符串错误】

文章目录 一、字符串错误二、处理方法三、涉及到的文件一、字符串错误 常量中有换行符错误:(也有const char * 到 LPCWSTR 转换的错误) 二、处理方法 需要把对应的文档用记事本打开,另存为 “带有BOM的UTF-8” 三、涉及到的文件 涉及到的文件有: src\analysis\processin…

中国城市统计年鉴、中国县域统计年鉴、中国财政统计年鉴、中国税务统计年鉴、中国科技统计年鉴、中国卫生统计年鉴​

统计年鉴是指以统计图表和分析说明为主&#xff0c;通过高度密集的统计数据来全面、系统、连续地记录年度经济、社会等各方面发展情况的大型工具书来获取统计数据资料。 统计年鉴是进行各项经济、社会研究的必要前提。而借助于统计年鉴&#xff0c;则是研究者常用的途径。目前国…

论坛管理系统|基于Spring Boot+ Mysql+Java+B/S架构的论坛管理系统设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 目录 前台功能效果图 管理员功能登录前台功能效果图 用户功能模块 系统功能设计 数据库E-R图设计 l…

数字逻辑-时序逻辑电路一

一、实验目的 &#xff08;1&#xff09;熟悉触发器的逻辑功能及特性。 &#xff08;2&#xff09;掌握集成D和JK触发器的应用。 &#xff08;3&#xff09;掌握时序逻辑电路的分析和设计方法。 二、实验仪器及材料 三、实验内容及步骤 1、用D触发器&#xff08;74LS74&am…

网络学习:9个计算机的“网络层”知识点

目录 一、IP 地址 1.1 分类表示法&#xff1a; 1.1.1 分类表示地址的其他说明 1.2 无分类编址 CIDR 二、IP 数据报文格式 Q: IP 报文里有什么&#xff1f;可以不按顺序或者字节来讲一讲 三、 路由概念 3.1 路由表 3.2 路由网络匹配 3.3 ARP 解析 3.4 RARP 逆地址解析…

Python 协程-asyncio、async/await

看到吐血 (ཀ」 ∠) 协程(Coroutine)本质上是一个函数&#xff0c;特点是在代码块中可以将执行权交给其他协程众所周知&#xff0c;子程序&#xff08;函数&#xff09;都是层级调用的&#xff0c;如果在A中调用了B&#xff0c;那么B执行完毕返回后A才能执行完毕。协程与子程序…

STM32第十课:串口发送

一、usart串口 1.1 USART串口协议 串口通讯(Serial Communication) 是一种设备间非常常用的串行通讯方式&#xff0c;因为它简单便捷&#xff0c;因此大部分电子设备都支持该通讯方式&#xff0c;电子工程师在调试设备时也经常使用该通讯方式输出调试信息。在计算机科学里&…

FPGA - 单总线协议(one-wire)

1&#xff0c;简介 单总线&#xff08;one-wire&#xff09;是美国 DALLAS 公司推出的外围串行扩展总线技术&#xff0c;与 SPI、I2C 等串行数据通信方式不同&#xff0c;它采用单根信号线&#xff0c;既传输时钟又传输数据&#xff0c;而且数据传输是双向的。它具有节省 I/O口…

idea Springboot 在线考试管理系统开发mysql数据库web结构java编程计算机网页

一、源码特点 springboot 在线考试管理系统是一套完善的完整信息系统&#xff0c;结合mvc框架和bootstrap完成本系统springboot spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有…

如何理解数据经济,数据要素,数据资源,数据资产入表、数据交易,数据经纪

引言 在数字经济时代&#xff0c;数据逐渐成为了新的财富。这不仅体现在企业层面&#xff0c;政府和个人也在积极地生成、收集和分析数据&#xff0c;以寻找商业价值和社会效益。数据财政模型的兴起&#xff0c;标志着从传统的以土地资源为核心的经济模型向以数据资产为核心的…

双链表(上)

1.结构 1.带头双向循环链表 注意&#xff1a;这里的“带头”跟前面我们说的“头节点”是两个概念&#xff0c;实际前面的在单链表阶段称呼不严 谨&#xff0c;但是为了同学们更好的理解就直接称为单链表的头节点。 带头链表里的头节点&#xff0c;实际为“哨兵位”&#xff0c…

【Web】浅聊XStream反序列化本源之恶意动态代理注入

目录 简介 原理 复现 具体分析之前 我们反序列化了个什么&#xff1f; XStream反序列化的朴素通识 具体分析 第一步&#xff1a;unmarshal解组 第二步&#xff1a;readClassType获取动态代理类的Class对象 第三步&#xff1a;调用convertAnother对动态代理类进行实例…

使用公式在Excel中指定列值的变化实现自动间隔着色(不是按照固定的行数)

如果你的文件很小&#xff0c;可以手工着色&#xff1b;但如果很大&#xff0c;就要借助公式来着色&#xff1b; 目的是什么&#xff0c;其中之一是&#xff1a;提升可读性。 一起往下看吧&#xff01;&#xff01; 如果你想要根据Excel某列中值的变化来间隔着色&#xff0c;…

LaTeX 目录标题取消(自定义)留白间距

默认的目录格式生成如下图&#xff0c;会发现“2 产品介绍”和“1.2 项目概述”中存在一段留白 通过在导言区定义以下代码即可自定义标题留白间距宽度 \usepackage[subfigure]{tocloft} \setlength{\cftbeforesecskip}{0.3em} 最终修改的效果如下

Games101笔记-变换

Scale Reflection Shear Rotate 没有额外提示默认绕原点旋转 线性变换 Transiation 不属于线性变换&#xff0c;仿射变换 齐次坐标 二维的点和向量增加一个维度 点加点等于两个点的中点 所有的仿射变换都可以写成齐次坐标的形式 在表示二维情况下的仿射变换时&#…

五.pandas常见操作

目录 五.pandas常见操作 1.pandas处理字符串 以上演示 1-大小写转换 2-去空格(两边) .str.strip() 3-切割 4-连接 .str.cat() 5-空格检测 .str.contains(" ") 6-替换 7-count()--返回元素出现次数 8-repeat() 2.查询操作 2.1 query(" ") 2.2…

mysql生成连续的日期

1.代码 例如&#xff1a;生成"2023-03-01"至"2023-03-10"之间的日期 WITH RECURSIVE date_range AS (SELECT "2023-03-01" AS date FROM dualUNION ALLSELECT DATE_ADD(date, INTERVAL 1 DAY) dateFROM date_rangeWHERE DATE_ADD(date, INTER…

【机器人控制 Robot Control】非线性控制(Non-linear Control)建模举例【新加坡南洋理工大学 NTU Singapore】

Non-linear Control Method Example: Non-linear Mechanical System Modelling of the System using Control Law Partitioning (Handwritten)

wordpress被恶意搜索攻击(网址/?s=****)解决方法。

源地址&#xff1a;https://www.ctvol.com/seoomethods/1413686.html 什么叫恶意搜索攻击&#xff1f; wordpress恶意搜索攻击并不是像病毒一样的攻击&#xff0c;而是一种seo分支黑帽手段&#xff0c;通过被攻击网站搜索功能中长尾关键词来实现攻击&#xff0c;通过网址不断…

数学问题难解?新研究提出MathScale方法,让AI更懂数学推理

引言&#xff1a;数学问题解决中的语言模型挑战 数学问题解决是一个复杂的认知过程&#xff0c;它要求参与者不仅要掌握数学知识&#xff0c;还要能够进行多步骤的逻辑推理。近年来&#xff0c;大语言模型&#xff08;LLMs&#xff09;在解决问题方面展现出了显著的能力&#…