本博客和大家分享一些本人在使用pytorch时候经历过的一些坑,将持续更新。
1. 报错:
RuntimeError: Expected object of type torch.FloatTensor but found type torch.cuda.FloatTensor for argument #2 'weight'
任务:需要实现从test_loader中随机获取一张图片,传入已经训练好的model中,运行以下代码报上述错误。
dataiter = iter(test_loader)
images, labels = dataiter.next()
images = Variable(images)
print model(images)
- 解决办法:加入这句话
images = images.type(torch.cuda.FloatTensor)
dataiter = iter(test_loader)
images, labels = dataiter.next()
images = Variable(images)
images = images.type(torch.cuda.FloatTensor)
print model(images)
2.报错
urllib2.URLError: <urlopen error [Errno 1] _ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure>
任务:从torchvision.models中下载已训练好的模型,会报如上错误,相关代码如下:
net = models.vgg16(pretrained=True)
本人在网上查了很久,有人说时python版本的原因,本人python版本为2.7.6,version需要大于2.7.9.但是重装更新python太麻烦了。于是采用以下方法进行解决:replace('https://', 'http://')
from torchvision.models.vgg import model_urls
import torchvision
model_urls['vgg16'] = model_urls['vgg16'].replace('https://', 'http://')
vgg16 = torchvision.models.vgg16(pretrained=True)
3. 心得
使用pytorch加载CIFAR10数据集的详情
train_dataset = torchvision.datasets.CIFAR10(
root=DATA_PATH, train=True, transform=transform_train, download=True
)
test_dataset = torchvision.datasets.CIFAR10(root='../../data/', train=False, transform=transform)
classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')
cifar10数据集经常做10分类,训练集有50000张图片,测试集有10000张。整个数据集有60000张图片。