第一步:导入头文件
import torch
import torchvision
import torchvision.transforms as transforms
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable
import torch.optim as optim
第二步:数据预处理
def loadtraindata():
# 路径
path = "data\\train"
trainset = torchvision.datasets.ImageFolder(path, transform=transforms.Compose([
# 将图片缩放到指定大小(h,w)或者保持长宽比并缩放最短的边到int大小
transforms.Resize((32, 32)),
transforms.ToTensor()])
)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2)
return trainloader
第三步:构建模型网络
开源网络结构
第四步:预测(提供正确率,混淆矩阵结果)
def test():
net = reload_net()
net.eval()
testloader = loadtestdata()
sum = 0
num = 0
labels_list = []
predicted_list = []
for images, labels in testloader:
sum += 1
outputs = net(Variable(images))
_, predicted = torch.max(outputs.data, 1)
if labels == predicted:
num += 1
labels_list.append(labels.numpy()[0])
predicted_list.append(predicted.numpy()[0])
print('正确率: ' + str(num*1.0 / sum))
cm = confusion_matrix(labels_list, predicted_list)
print(cm) #打印混淆矩阵的值
plot_confusion_matrix(cm, classes, "Confusion Matrix")
plt.show()
结果:
1)代码结构
2)预测的一些结果
3)带界面运行结果
推荐链接
发表评论