somehow my accuracy is very low on cifar10?
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)))


How do I obtain GPU results with a label?
I got almost 10% accuracy but my original training is accuracy is 70%.

The trick training that exact dataset (cifar10) and getting better accuracy is to use data augmentation.

Originally cifar10 has 50.000 images for training and 10.000 for validation.

If you don't augment images while training you will overfit. Training accuracy will be much bigger than validation accuracy.

So your goal is to reduce overfitting. 

Best Way to Reduce overfitting is to train on more data (augment your data).
Here is one repo that may help you dealing with augmentation in PyTorch.

And in PyTorch check these to augment your data such as RandomRotation, Resize, RandomVerticalFlip, RandomSizedCrop, ...

One example of a native PyTorch transform may look like:

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)


