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.hqwc.cn/news/536945.html

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

相关文章

C++入门篇(2)

1. 内联函数 1.1 概念 C中&#xff0c;以 inline 修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调用建立栈帧的开销&#xff0c;内联函数提升程序运行的效率。 #include <iostream> using namespace std;int Add(int…

DMSP夜间灯光卫星介绍和数据下载

DMSP(Defense Meteorological Sate-llite Program)是美国国防部的极轨卫星计划&#xff0c;与NOAA卫星同属于一类&#xff0c;只不过星上载荷不同。 DMSP卫星简介 现有DMSP为三轴姿态稳定卫星&#xff0c;运行在高度约830km的太阳同步轨道&#xff0c;周期约101min&#xff0c…

如何在 Linux ubuntu 系统上搭建 Java web 程序的运行环境

如何在 Linux ubuntu 系统上搭建 Java web 程序的运行环境 基于包管理器进行安装 Linux 会把一些软件包放到对应的服务器上&#xff0c;通过包管理器这样的程序&#xff0c;来把这些软件包给下载安装 ubuntu系统上的包管理器是 apt centos系统上的包管理器 yum 注&#xff1a;…

谈谈Darknet53为啥这么难训练

在我使用Imagenet2012对Darknet53进行预训练的时候&#xff0c;往往训练到一半&#xff0c;就会出现过拟合&#xff0c;导致无法继续向下训练&#xff0c;尝试了很多方法&#xff0c;最后发现问题出现在下图红框的部分。 得出这个结论是因为当我使用Resnet中&#xff0c;包含有…

医药大数据案例分析

二、功能 &#xff08;1&#xff09;流量分析 &#xff08;2&#xff09;经营状态分析 &#xff08;3&#xff09;大数据可视化系统 配置tomcat vim /root/.bash_profile添加以下内容&#xff1a; export CATALINA_HOME/opt/tomcat export PATH P A T H : PATH: PATH:CATALIN…

leetcode一天一题-第1天

为了增加自己的代码实战能力&#xff0c;希望通过刷leetcode的题目&#xff0c;不断提高自己&#xff0c;增加对代码的理解&#xff0c;同时开拓自己的思维方面。 题目名称&#xff1a;两数之和 题目编号&#xff1a;1 题目介绍&#xff1a; 给定一个整数数组 nums 和一个整数…

【算法与数据结构】队列的实现详解

文章目录 &#x1f4dd;队列的概念及结构&#x1f320; 队列的顺序实现&#x1f309;初始化&#x1f320;入队&#x1f309;出队&#x1f320;获取队列首元素&#x1f309;获取队列尾部元素&#x1f320;获取队列中有效元素个数&#x1f309; 队列是否为空&#x1f320;查看队列…

Django框架的全面指南:从入门到高级【第128篇—Django框架】

Django框架的全面指南&#xff1a;从入门到高级 Django是一个高效、功能强大的Python Web框架&#xff0c;它被广泛用于构建各种规模的Web应用程序。无论是初学者还是有经验的开发人员&#xff0c;都可以从入门到掌握Django的高级技巧。在本指南中&#xff0c;我们将带你逐步了…

十三届试题B(山)

这天小明正在学数数。 他突然发现有些正整数的形状像一座“山”&#xff0c;比如 123565321 、 145541 &#xff0c;它们左右对称&#xff08;回文&#xff09;且数位上的数字先单调不减&#xff0c;后单调不增。 小明数了很久也没有数完&#xff0c;他想让你告诉他在区间[2022…

YOLOv5目标检测学习(5):源码解析之:推理部分dectet.py

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、导入相关包与路径、模块配置1.1 导入相关的python包1.2 获取当前文件的相对路径1.3 加载自定义模块1.4 总结 二、执行主体的main函数所以执行推理代码&…

【易语言】夸克网盘通用一键转存工具

这标题很熟悉吧&#xff0c;没错&#xff0c;之前是用python写的。 然而py编译的exe好像兼容性贼差&#xff0c;好几个人跟我反馈闪退、卡死。 所以用易语言重写了一下。 主要更新了读取数据库链接的功能&#xff0c;设置好一定的时间范围&#xff0c;就相当于是可以每日更新链…

盘点9款AI论文写作神器,轻松写出高质量论文

0. 未来百科 未来百科&#xff0c;是一个全球最大的 AI 产品导航网站 —— 为发现全球优质 AI 工具而生 。目前已 聚集全球 10000优质 AI 工具产品 &#xff0c;旨在帮助用户发现全球最好的 AI 工具&#xff0c;同时为研发 AI 垂直应用的创业公司提供展示窗口&#xff0c;迎接…