PyTorch学习笔记(十七)——完整的模型验证(测试,demo)套路

news2024/12/23 13:06:48

完整代码:

import torch
import torchvision
from PIL import Image
from torch import nn

image_path = "../imgs/dog.png"
image = Image.open(image_path)
print(image)

# 因为png格式是四个通道,除了RGB三通道外,还有一个透明度通道
image = image.convert("RGB")
transform = torchvision.transforms.Compose([torchvision.transforms.Resize((32,32)),
                                            torchvision.transforms.ToTensor()])
image = transform(image)
print(image.shape)

class MyNN(nn.Module):
    def __init__(self):
        super(MyNN, self).__init__()
        self.model = nn.Sequential(
            nn.Conv2d(3, 32, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 32, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 64, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Flatten(),
            nn.Linear(64 * 4 * 4, 64),
            nn.Linear(64, 10)
        )

    def forward(self, x):
        x = self.model(x)
        return x

model = torch.load("mynn_0.pth")
print(model)

image = torch.reshape(image,(1,3,32,32))
model.eval()

with torch.no_grad():
    output = model(image.cuda())
print(output)
print(output.argmax(1))

 采用GPU训练的模型,两种方法

(1)在CPU上加载,要从GPU映射到CPU,即把model = torch.load("mynn_9.pth")改为:

model = torch.load("mynn_9.pth",map_location=torch.device('cpu'))

(2)将image转到GPU中,即把output = model(image)改为:

output = model(image.cuda())

 

 预测错误的原因可能是训练次数不够多

 改成:

model = torch.load("mynn_9.pth")

 

 

 

 

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

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

相关文章

利用“病毒制造机”实现脚本病毒的制造

一、脚本病毒的概念: 脚本病毒通常是 JavaScript 或 VBScript 等语言编写的恶意代码,一般广告性质,会修改 IE 首页、修改注册表等信息,对用户计算机造成破坏。 通过网页进行的传播的病毒较为典型,脚本病毒还会有如下前…

【LeetCode-中等题】128. 最长连续序列

题目 题解一:HeshSet枚举 思路:先对数组进行set去重,核心就是,先找出临界值(假设以最小临界为例,那么这个临界值自己就是最小值,),以临界值不断做加1操作,看…

Kotlin 使用 View Binding

解决的问题: 《第一行代码——Android》第三版 郭霖 P277 视图绑定的问题 描述: kotlin-android-extensions 插件已经弃用 butter knife 已经弃用 解决办法 推荐使用 View Binding 来代替 findViewById 使用方法 1、配置 build.gradle 2、在act…

【MySQL系列】SQL语句入门(创建删除操作)、字符集和数据类型详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

Docker安装并配置镜像加速器,镜像、容器的基本操作

目录 1.安装docker服务,配置镜像加速器 (1)安装依赖的软件包 (2)设置yum源,我配置的阿里仓库 (3)选择一个版本安装 (4)启动docker服务,并设置…

WaSender 3.0 全功能版--Crack

WaSender – Is Windows software which runs on PC, a solution to automatically send messages to your bulk customers and Groups.​ Features:- Unlimited WhatsApp Messages to Contact / Numbers Send messages to all contacts including contacts not saved in your…

C#面向对象程序设计之变量的作用域,深入浅出 入门和进阶教程3

1、效果镇楼: 最近忒忙了!真的忙到不可开交的呢,繁杂业务的处理真的不是您,我个人想象的样子,完全比您个人想象的要复杂至少三倍以上的难度!也是客观事实。 菜鸟程序员面临的客观残酷现实!尤其您这个年龄阶段,实在是堪忧,尴尬的很啊,非常严峻的形势,也可以说特别严峻…

docker导出、导入镜像

导出镜像到本地,然后可以通过压缩包的方式传输。 导出:docker image save 镜像名:版本号 > /home/quxiao/javatest.tgz 导入:docker image load -i /home/quxiao/javatest.tgz 删除镜像就得先删除容器,当你每运行一次镜像&…

Hadabot:从网络浏览器操作 ROS2 远程控制器

一、说明 Hadabot Hadabot是一个学习ROS2和机器人技术的机器人套件。使用 Hadabot,您将能够以最小的挫败感和恐吓来构建和编程物理 ROS2 机器人。Hadabot套件目前正在开发中。它将仅针对ROS2功能,并强调基于Web的用户界面。 随着开发的进展&a…

classloader的讲解

我们先从Activity的启动流程开始切入: //位于android/app/ActivityThread.java中 private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {// ........省略代码//通过反射创建activityjava.lang.ClassLoader cl appContext.getCl…

LLM架构自注意力机制Transformers architecture Attention is all you need

使用Transformers架构构建大型语言模型显著提高了自然语言任务的性能,超过了之前的RNNs,并导致了再生能力的爆炸。 Transformers架构的力量在于其学习句子中所有单词的相关性和上下文的能力。不仅仅是您在这里看到的,与它的邻居每个词相邻&…

无重复字符的最长子串——力扣3

滑动窗口 int lengthOfLongestSubstring(string s){int n=s.size();unordered_set<char

在jupyter notebook中使用海龟绘图

首先&#xff0c;安装ipyturtle3 ref:ipyturtle3 PyPI pip install ipyturtle3然后&#xff0c;安装ipycanvas ipycanvas是一个需要安装在与JupyterLab实例相同环境的包。此外&#xff0c;您需要安装nodejs&#xff0c;并启用JupyterLab ipycanvas小部件。 所有这些都在ipy…

阿里云2核4G服务器配置汇总表_轻量和ECS

阿里云2核4G服务器配置价格表&#xff0c;297元一年&#xff0c;配置为轻量应用服务器2核4G、4M带宽、60GB高效云盘&#xff0c;折合24元一个月。 目录 2核4G服务器轻量&#xff1a; 2核4G服务器ECS 关于轻量和ECS的区别&#xff1a; 2核4G服务器轻量&#xff1a; 云服务器…

2023前端面试笔记 —— HTML5(持续收集更新)

系列文章目录 内容链接2023前端面试笔记HTML5 文章目录 系列文章目录前言一、HTML 文件中的 DOCTYPE 是什么作用二、HTML、XML、XHTML 之间有什么区别三、前缀为 data- 开头的元素属性是什么四、谈谈你对 HTML 语义化的理解五、HTML5 对比 HTML4 有哪些不同之处六、meta 标签有…

【LeetCode-中等题】11. 盛最多水的容器

题目 题解一:双指针法 思路&#xff1a; 题目中的示例为&#xff1a; 在初始时&#xff0c;左右指针分别指向数组的左右两端&#xff0c;它们可以容纳的水量为 min⁡(1,7)∗88 此时我们需要移动一个指针。移动哪一个呢&#xff1f;应该移动对应数字较小的那个指针&#xff0…

数据结构 | 堆

本文简要总结堆的概念。 更新&#xff1a;2023 / 8 / 20 数据结构 | 堆 堆概念方法插入步骤 删除步骤 示例大根堆堆插入删除堆排序 代码实现Python大根堆1.2. heapq 小根堆1.2. heapq 参考链接 堆 概念 如果谈到堆排序&#xff0c;那么必然要说说什么是 大根堆 max heap 和 …

(排序) 剑指 Offer 45. 把数组排成最小的数 ——【Leetcode每日一题】

❓ 剑指 Offer 45. 把数组排成最小的数 难度&#xff1a;中等 输入一个非负整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459”…

不是说嵌入式是风口吗,那为什么工作还那么难找?

最近确实有很多媒体、机构渲染嵌入式可以拿高薪&#xff0c;这在行业内也是事实&#xff0c;但前提是你有足够的竞争力&#xff0c;真的懂嵌入式。 时至今日&#xff0c;能做嵌入式程序开发的人其实相当常见&#xff0c;尤其是随着树莓派、Arduino等开发板的普及&#xff0c;甚…