小土堆-pytorch-神经网络-完整的验证套路16_笔记

发布时间:2023年12月22日

模型的保存:
在这里插入图片描述
当你在cpu上使用gpu训练的模型时

model=torch.load(r"E:\pycharm\Py_Projects\logs\tudui_2.pth")
改为(就是把gpu训练完的东西映射到gpu上)
model=torch.load(r"E:\pycharm\Py_Projects\logs\tudui_2.pth",map_location=torch.device('cpu') 

标签对应图片类型:
在这里插入图片描述
完整的验证套路:

# 在网上,随便找一个狗的图片,把这个狗的图片放到任一一个文件夹下,这里我们放到test_picture文件夹里
import torch
import torchvision
from PIL import Image
# 在test.py下访问我们刚才复制的图片文件
from torch import nn

img_path=r"E:\pycharm\Py_Projects\test_picture\dog.png"
image=Image.open(img_path)
print(image)
image=image.convert('RGB') # 因为png格式是四个通道,除了RGB三通道外,还有一个透明度通道,所以我们调用image=image.convert('RGB'),保留颜色通道

transform=torchvision.transforms.Compose([torchvision.transforms.Resize((32,32)),torchvision.transforms.ToTensor()])         # compose是把几个transform联例在一起 ,model中inputs的图片类型得是32*32大小的

image=transform(image)
print(image.shape)


# 找到网络模型,先把网络模型copy进去
class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        self.model=nn.Sequential(
            nn.Conv2d(3,32,5,1,2) , # 其中padding=2 是通过计算得出的,也可以写-1自动计算
            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(r"E:\pycharm\Py_Projects\logs\tudui_29_gpu.pth",map_location=torch.device("cpu"))
image=torch.reshape(image,(1,3,32,32))
model.eval() # model转换为测试类型
with torch.no_grad():       # 节约性能
     output=model(image)
print(output)
print(output.argmax(1)) # 把output的那10项中最接近的输出出来

选用第30轮gpu训练的模型进行训练
预测结果:
在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_62613321/article/details/132781449
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。