这两天安装torchvision出现了很多坑,这里记录一下。
开始我的torch版本是1.3.1,正常pip安装torchvision
pip install torchvision
安装成功,但是导入的时候出现了问题。
>>> import torchvision
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/sun/my_python3/lib/python3.7/site-packages/torchvision/__init__.py", line 3, in <module>
from torchvision import models
File "/home/sun/my_python3/lib/python3.7/site-packages/torchvision/models/__init__.py", line 12, in <module>
from . import detection
File "/home/sun/my_python3/lib/python3.7/site-packages/torchvision/models/detection/__init__.py", line 1, in <module>
from .faster_rcnn import *
File "/home/sun/my_python3/lib/python3.7/site-packages/torchvision/models/detection/faster_rcnn.py", line 7, in <module>
from torchvision.ops import misc as misc_nn_ops
File "/home/sun/my_python3/lib/python3.7/site-packages/torchvision/ops/__init__.py", line 13, in <module>
_register_custom_op()
File "/home/sun/my_python3/lib/python3.7/site-packages/torchvision/ops/_register_onnx_ops.py", line 51, in _register_custom_op
register_custom_op_symbolic('torchvision::_new_empty_tensor_op', new_empty_tensor_op, _onnx_opset_version)
File "/home/sun/my_python3/lib/python3.7/site-packages/torch/onnx/__init__.py", line 195, in register_custom_op_symbolic
return utils.register_custom_op_symbolic(symbolic_name, symbolic_fn, opset_version)
File "/home/sun/my_python3/lib/python3.7/site-packages/torch/onnx/utils.py", line 740, in register_custom_op_symbolic
.format(symbolic_name))
RuntimeError: Failed to register operator torchvision::_new_empty_tensor_op. The symbolic name must match the format Domain::Name, and sould start with a letter and contain only alphanumerical characters
这时去百度上搜,惟一的答案就是更新torch。
但更新torch后,仍然报上述错误。又去google上一查,主要问题是torch的版本与torchvision的版本不匹配。因此卸载了torch和torchvision重新安装,但仍然无法解决上述错误。
百思不得其解后发现,即使卸载了torch仍然能够import torch,而且安装了新版本的torch后输出的版本仍然是torch1.3.1,所以怀疑根本没有将torch更新到正确的位置。
因此卸载了所有的pytorch和torchvision。之后查找python的实际位置。
(my_python3) sun@sun-Inspiron-3543:~/下载$ which python
/home/sun/my_python3/bin/python
所以把新的pytorch和torchvision安装到这个位置即可。
(my_python3) sun@sun-Inspiron-3543:~/下载$ pip install -t /home/sun/my_python3/lib/python3.7/ torch-1.5.1-cp37-cp37m-manylinux1_x86_64.whl torchvision-0.6.1+cpu-cp37-cp37m-linux_x86_64.whl
Processing ./torch-1.5.1-cp37-cp37m-manylinux1_x86_64.whl
Processing ./torchvision-0.6.1+cpu-cp37-cp37m-linux_x86_64.whl
Processing /home/sun/.cache/pip/wheels/8b/99/a0/81daf51dcd359a9377b110a8a886b3895921802d2fc1b2397e/future-0.18.2-cp37-none-any.whl
Collecting numpy
Using cached numpy-1.19.0-cp37-cp37m-manylinux2010_x86_64.whl (14.6 MB)
Collecting pillow>=4.1.1
Using cached Pillow-7.1.2-cp37-cp37m-manylinux1_x86_64.whl (2.1 MB)
Installing collected packages: future, numpy, torch, pillow, torchvision
Successfully installed future-0.18.2 numpy-1.19.0 pillow-7.1.2 torch-1.5.1 torchvision-0.6.1+cpu
再测试一下
(my_python3) sun@sun-Inspiron-3543:~/下载$ python
Python 3.7.0 (default, Jun 28 2018, 13:15:42)
[GCC 7.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> import torchvision
>>> exit()
大功告成!