在jupyter上运行下面这段代码时,总是报这个错误,估计是torchvision出了问题:
import math
import torch
import torch.nn as nn
import torch.nn.functional as F
from torchvision import datasets, transforms
import torch.utils.data
在网上查资料debug的过程中意识到,自己电脑上的GPU PyTorch版本是 1.7.0,这个版本当初是自己手动安装的(也就是把安装包从网上下载下来,安装到conda里),后来torchvision库是用 pip install torchvision
下载的,查了一下现在电脑上的torchvision版本是0.9.0 。而与GPU PyTorch 1.7.0配套的torchvision版本是0.8.0(在PyTorch官网查到的)。
因此可能是torchvision的版本问题。
于是卸载torchvision,用下面的命令重新安装了一个torchvision 0.8.0
pip install --no-deps torchvision==0.8.0
但报错,说没有这个版本的torchvision
注意:
--no-deps
在这里的作用是让pip只下载torchvision。因为如果直接输入pip install torchvision==0.8.0
来下载torchvision的话,pip会自动为你下载配套的torch包,到时候可能会把你原来的torch包给顶掉,造成不必要的麻烦。
ERROR: Could not find a version that satisfies the requirement torchvision==0.8.0 (from versions: 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.2.0, 0.2.1, 0.2.2, 0.2.2.post2, 0.2.2.post3, 0.5.0, 0.9.0, 0.9.1)
ERROR: No matching distribution found for torchvision==0.8.0
于是考虑下载一个更低版本的torchvision试试。于是下载了个 0.5.0 版本的 torchvision:
pip install --no-deps torchvision==0.5.0
下载成功:
Successfully installed torchvision-0.5.0
之后运行了一下本文开头的导库代码,可以正常导入。问题解决!