完整模型验证套路
1.导入工具包
2.设置图片路径
3.读取图片
4.调整通道数为3
5.构造函数调整图片格式用于训练(可以输出查看一下)
6.导入用第一种方式保存的训练模型(导入GPU训练的模型,用CPU验证需要加一个参数)
7.调整图片的格式使其具有batchsize(需要有batchsize才能放入模型)
8.调整成测试模型(不会因为测试数据而调整模型)
9.测试模型
10.最后用直观的方式输出模型的预测结果
import torch
import torchvision
from PIL import Image
from torch import nn
img_path = "F:/deeplearning/demo_2/imags/2.png"
image = Image.open(img_path)
print(image)
image = image.convert("RGB") # png图像是四个通道,有一个透明度,用此行代码保留其颜色通道
# 如果图片本来就是三个通道保留其颜色不变,经此操作,可以适应png、jpg各种格式的图片
print(image)
# 将变化构造在一起
transform = torchvision.transforms.Compose([torchvision.transforms.Resize((32, 32)),
torchvision.transforms.ToTensor()
])
image = transform(image)
print(image.shape)
# 搭建神经网络
class Dsc(nn.Module):
def __init__(self):
super(Dsc, 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(1024, 64),
nn.Linear(64, 10)
)
def forward(self, x):
x = self.model(x)
return x
if __name__ == '__main__':
dsc = Dsc()
input = torch.ones((64, 3, 32, 32))
output = dsc(input)
print(output.shape)
# 加载模型
model = torch.load("dsc_5.pth")
print(model)
# 如果模型是在gpu上训练的,且需要加载到cpu上运行,应该用如下方式
# model = torch.load("dsc_5.pth", map_location=torch.device('cpu'))
image = torch.reshape(image,(1, 3, 32, 32))
model.eval() # 调整成测试模式,不对测试数据进行修改模型
with torch.no_grad(): # 这一行代码可以节约性能
output = model(image)
print(output)
print(output.argmax(1))
/*
输出
tensor([[ 6.3277, 0.9530, 3.9253, -1.7403, -1.0751, -2.5407, -1.2411, -4.4859,
-0.3651, -0.1523]])
tensor([0])
*/
了解了以下开源项目的查看方法