with torch.no_grad():
for data in test_loader:
images,labels = data
images, labels = images.to(device), labels.to(device)
outputs, features = net(images)
_ , predicted = torch.max(outputs,1)
total += labels.size(0)
correct += (predicted==labels).sum().item()
print('Accuracy of the network on the 10000 test images: %d %%' % (
100 * (correct / total)))
如何获得带有标签的GPU结果?
我的准确率几乎达到10%,但我最初的训练是准确率达到70%。
答案 0 :(得分:1)
精确训练数据集(cifar10)并获得更高准确性的技巧是使用数据增强。
最初cifar10拥有50.000张训练图像和10.000张验证图像。
如果您在训练时不增强图像,则会过分适应。训练精度将比验证精度大得多。
所以您的目标是减少过度拟合。
减少过度拟合的最佳方法是训练更多数据(增强数据)。 这是一个repo,可以帮助您处理PyTorch中的增强操作。
然后在PyTorch check these中扩展数据,例如RandomRotation,Resize,RandomVerticalFlip,RandomSizedCrop,...
原生PyTorch转换的一个示例可能看起来像:
t = transforms.Compose([transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.RandomErasing(),
transforms.Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))]
)
dl_train = DataLoader( torchvision.datasets.CIFAR10('/data/cifar10', download=True, train=True, transform=t),
batch_size=bs, shuffle=True)
dl_valid = DataLoader( torchvision.datasets.CIFAR10('/data/cifar10', download=True, train=False, transform=t),
batch_size=bs, shuffle=True)