建站属于什么行业,个人建网站wordpress,自己做代练网站,备案期间网站能访问吗网络训练好了#xff0c;需要提供输入进行验证网络模型训练的效果
一、加载测试数据
创建python测试文件#xff0c;beyond_test.py 保存在dataset文件夹下a文件夹里的1.jpg小狗图片
二、读取测试图片#xff0c;重新设置模型所规定的大小(32,32)#xff0c;并转为tens…网络训练好了需要提供输入进行验证网络模型训练的效果
一、加载测试数据
创建python测试文件beyond_test.py 保存在dataset文件夹下a文件夹里的1.jpg小狗图片
二、读取测试图片重新设置模型所规定的大小(32,32)并转为tensor类型数据
import torchvision
from PIL import Image
from torch import nn
from torchvision import transformsimg_path ./dataset/a/1.jpg#当前路径下的dataset文件夹下的a文件夹下的1.jpg文件
img Image.open(img_path)
print(img)#PIL.JpegImagePlugin.JpegImageFile image modeRGB size381x499 at 0x1CE281C2748
img img.convert(RGB)#png为四通道jpg为三通道这里只需要保存RGB通道可以适应png和jpg图片#①剪切尺寸
trans_resize transforms.Resize((32,32))
#②转为tensor类型
trans_tensor transforms.ToTensor()transform torchvision.transforms.Compose([trans_resize,trans_tensor])
#Compose参数都是transform对象且第一个输出必须满足第二个输入
#trans_resize为Resize对象最后输出为PIL类型
#trans_tensor为ToTensor对象输入为PIL输出为tensorimg transform(img)
img torch.reshape(img,(1,3,32,32))
print(img.shape)#torch.Size([1, 3, 32, 32])
#送入神经网络需要的格式为(batch_size,channel,H,W)三、加载模型
由十七、完整神经网络模型训练步骤博文所训练的模型存放在该路径目录下这里只是训练3次而已仅作为学习。
class Beyond(nn.Module):def __init__(self):super(Beyond,self).__init__()self.model nn.Sequential(nn.Conv2d(in_channels3,out_channels32,kernel_size(5,5),stride1,padding2),nn.MaxPool2d(2),nn.Conv2d(in_channels32,out_channels32,kernel_size(5,5),stride1,padding2),nn.MaxPool2d(2),nn.Conv2d(in_channels32,out_channels64,kernel_size(5,5),stride1,padding2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(in_features1024,out_features64),nn.Linear(in_features64,out_features10))def forward(self,input):x self.model(input)return xbeyond torch.load(./beyond/beyond_3.pth,map_locationcpu)
# map_locationcpu表示不管模型是GPU还是CPU进行训练的此台电脑使用CPU进行验证# 若模型是在GPU下训练验证的时候电脑没有GPU需要指明map_location参数
# 若不设置map_location电脑会根据模型来进行选择映射方式例如模型beyond_3.pth在GPU下训练的则验证的时候系统会自动调用GPU进行验证
print(beyond)四、模型转换为测试类型
eval()官网API
beyond.eval()五、将测试图片送入模型
beyond.eval()
with torch.no_grad():output beyond(img)
print(output)
#tensor([[ 0.7499, 0.5700, -1.3467, 0.4218, 0.0798, -0.1516, -1.3209, 0.1138, 1.2504, -0.6495]])print(output.argmax(1))#tensor([8])六、查看验证结果
方法一
由CIFAR10官网给的数据可以看出 8对应的是ship dog对应的是5
主要还是模型训练的次数太少了主要的目的还是学习模型套路。
方法二
在beyond_train.py文件下(该文件来自博文十七、完整神经网络模型训练步骤) test_data torchvision.datasets.CIFAR10(CIFAR_10,trainFalse,transformtorchvision.transforms.ToTensor(),downloadTrue) 处 打个断点debug运行下 train_data — class_to_idx下就存放这类别编号索引
七、完整代码
import torch
import torchvision
from PIL import Image
from torch import nn
from torchvision import transformsclass Beyond(nn.Module):def __init__(self):super(Beyond,self).__init__()self.model nn.Sequential(nn.Conv2d(in_channels3,out_channels32,kernel_size(5,5),stride1,padding2),nn.MaxPool2d(2),nn.Conv2d(in_channels32,out_channels32,kernel_size(5,5),stride1,padding2),nn.MaxPool2d(2),nn.Conv2d(in_channels32,out_channels64,kernel_size(5,5),stride1,padding2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(in_features1024,out_features64),nn.Linear(in_features64,out_features10))def forward(self,input):x self.model(input)return xbeyond torch.load(./beyond/beyond_3.pth)
print(beyond)img_path ./dataset/a/1.jpg#当前路径下的dataset文件夹下的a文件夹下的1.jpg文件
img Image.open(img_path)
print(img)#PIL.JpegImagePlugin.JpegImageFile image modeRGB size381x499 at 0x1CE281C2748
img img.convert(RGB)#png为四通道jpg为三通道这里只需要保存RGB通道可以适应png和jpg图片#①剪切尺寸
trans_resize transforms.Resize((32,32))
#②转为tensor类型
trans_tensor transforms.ToTensor()transform torchvision.transforms.Compose([trans_resize,trans_tensor])
#Compose参数都是transform对象且第一个输出必须满足第二个输入
#trans_resize为Resize对象最后输出为PIL类型
#trans_tensor为ToTensor对象输入为PIL输出为tensorimg transform(img)
img torch.reshape(img,(1,3,32,32))
print(img.shape)#torch.Size([1, 3, 32, 32])
#送入神经网络需要的格式为(batch_size,channel,H,W)beyond.eval()
with torch.no_grad():output beyond(img)
print(output)
#tensor([[ 0.7499, 0.5700, -1.3467, 0.4218, 0.0798, -0.1516, -1.3209, 0.1138, 1.2504, -0.6495]])print(output.argmax(1))#tensor([8])