How to fix ' ImportError: cannot import name 'numpy_type_map' ' in Python?
How to fix ' ImportError: cannot import name 'numpy_type_map' ' in Python?
我已按照 Detectron 中的说明进行操作,并且已对其进行多次配置:代码按应有的方式编译。当谈到 运行 代码时,我得到这个错误:
Traceback (most recent call last):
File "tools/train_net_step.py", line 21, in <module>
import nn as mynn
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/nn/__init__.py", line 2, in <module>
from .parallel import DataParallel
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/nn/parallel/__init__.py", line 3, in <module>
from .data_parallel import DataParallel, data_parallel
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/nn/parallel/data_parallel.py", line 4, in <module>
from .scatter_gather import scatter_kwargs, gather
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/nn/parallel/scatter_gather.py", line 8, in <module>
from torch.utils.data.dataloader import numpy_type_map
ImportError: cannot import name 'numpy_type_map'
我也试过google很多次了,但是找不到解决的办法。我能做些什么?我正在使用 PyTorch 0.4.1 和 pytorch nightly 1.0.0-dev.
编辑:感谢 sancelot,我设法解决了这个错误(PyTorch 0.4.0 解决了这个问题)。无论如何,现在我又遇到了另一个错误:
Traceback (most recent call last):
File "tools/train_net_step.py", line 27, in <module>
from modeling.model_builder import Generalized_RCNN
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/modeling/model_builder.py", line 11, in <module>
from model.roi_pooling.functions.roi_pool import RoIPoolFunction
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/model/roi_pooling/functions/roi_pool.py", line 3, in <module>
from .._ext import roi_pooling
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/model/roi_pooling/_ext/roi_pooling/__init__.py", line 3, in <module>
from ._roi_pooling import lib as _lib, ffi as _ffi
ImportError: /home/federico/PycharmProjects/Detectron.pytorch/lib/model/roi_pooling/_ext/roi_pooling/_roi_pooling.so: undefined symbol: PyInt_FromLong
这次我搞不懂的是:这是外部库报错吗?我使用的是我的教授以前制作的 anaconda 环境,他曾将它用于 Detectron...所以我猜不出为什么会得到这个。
我想 detectron 和您正在使用的所需的 pytorch 版本之间存在版本不匹配。
如果您查看最新的 pytorch 源代码,则没有 numpy_type_map 组件。
https://github.com/pytorch/pytorch/blob/master/torch/utils/data/dataloader.py
是的,这些是由于 Pytorch 版本不匹配造成的。解决方案取决于你愿意去到什么程度,有时如果你可以接受黑客攻击并且只是得到它运行,那么只需复制粘贴旧版本的numpy_type_map
:
numpy_type_map = {
'float64': torch.DoubleTensor,
'float32': torch.FloatTensor,
'float16': torch.HalfTensor,
'int64': torch.LongTensor,
'int32': torch.IntTensor,
'int16': torch.ShortTensor,
'int8': torch.CharTensor,
'uint8': torch.ByteTensor,
}
或者,直到 1.1.0 版本,您可以尝试替换 import 语句,
来自:
from torch.utils.data.dataloader import numpy_type_map
到:
from torch.utils.data._utils.collate import numpy_type_map
N.b。仍然会在更新的版本中中断。同样,这是一个 hacky quick-fix 解决方案。
我已按照 Detectron 中的说明进行操作,并且已对其进行多次配置:代码按应有的方式编译。当谈到 运行 代码时,我得到这个错误:
Traceback (most recent call last):
File "tools/train_net_step.py", line 21, in <module>
import nn as mynn
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/nn/__init__.py", line 2, in <module>
from .parallel import DataParallel
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/nn/parallel/__init__.py", line 3, in <module>
from .data_parallel import DataParallel, data_parallel
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/nn/parallel/data_parallel.py", line 4, in <module>
from .scatter_gather import scatter_kwargs, gather
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/nn/parallel/scatter_gather.py", line 8, in <module>
from torch.utils.data.dataloader import numpy_type_map
ImportError: cannot import name 'numpy_type_map'
我也试过google很多次了,但是找不到解决的办法。我能做些什么?我正在使用 PyTorch 0.4.1 和 pytorch nightly 1.0.0-dev.
编辑:感谢 sancelot,我设法解决了这个错误(PyTorch 0.4.0 解决了这个问题)。无论如何,现在我又遇到了另一个错误:
Traceback (most recent call last):
File "tools/train_net_step.py", line 27, in <module>
from modeling.model_builder import Generalized_RCNN
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/modeling/model_builder.py", line 11, in <module>
from model.roi_pooling.functions.roi_pool import RoIPoolFunction
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/model/roi_pooling/functions/roi_pool.py", line 3, in <module>
from .._ext import roi_pooling
File "/home/federico/PycharmProjects/Detectron.pytorch/lib/model/roi_pooling/_ext/roi_pooling/__init__.py", line 3, in <module>
from ._roi_pooling import lib as _lib, ffi as _ffi
ImportError: /home/federico/PycharmProjects/Detectron.pytorch/lib/model/roi_pooling/_ext/roi_pooling/_roi_pooling.so: undefined symbol: PyInt_FromLong
这次我搞不懂的是:这是外部库报错吗?我使用的是我的教授以前制作的 anaconda 环境,他曾将它用于 Detectron...所以我猜不出为什么会得到这个。
我想 detectron 和您正在使用的所需的 pytorch 版本之间存在版本不匹配。 如果您查看最新的 pytorch 源代码,则没有 numpy_type_map 组件。 https://github.com/pytorch/pytorch/blob/master/torch/utils/data/dataloader.py
是的,这些是由于 Pytorch 版本不匹配造成的。解决方案取决于你愿意去到什么程度,有时如果你可以接受黑客攻击并且只是得到它运行,那么只需复制粘贴旧版本的numpy_type_map
:
numpy_type_map = {
'float64': torch.DoubleTensor,
'float32': torch.FloatTensor,
'float16': torch.HalfTensor,
'int64': torch.LongTensor,
'int32': torch.IntTensor,
'int16': torch.ShortTensor,
'int8': torch.CharTensor,
'uint8': torch.ByteTensor,
}
或者,直到 1.1.0 版本,您可以尝试替换 import 语句,
来自:
from torch.utils.data.dataloader import numpy_type_map
到:
from torch.utils.data._utils.collate import numpy_type_map
N.b。仍然会在更新的版本中中断。同样,这是一个 hacky quick-fix 解决方案。