【问题标题】:How to fix ' ImportError: cannot import name 'numpy_type_map' ' in Python?如何在 Python 中修复“ImportError: cannot import name 'numpy_type_map'”?
【发布时间】:2019-01-27 11:31:30
【问题描述】:

我已按照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……所以我猜不出为什么会这样。

【问题讨论】:

    标签: python pytorch object-detection


    【解决方案1】:

    是的,这是由于 Pytorch 版本不匹配造成的。解决方案取决于你愿意走多远,有时如果你对 hacking 没问题并让它运行起来,那么只需从旧版本复制粘贴 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
    

    注意仍会在更新的版本中中断。同样,这是一个hacky 快速修复解决方案。

    【讨论】:

      【解决方案2】:

      我想检测器和您正在使用的所需 pytorch 版本之间存在版本不匹配。 如果您查看最新的 pytorch 源代码,则没有 numpy_type_map 组件。 https://github.com/pytorch/pytorch/blob/master/torch/utils/data/dataloader.py

      【讨论】:

      • 好的,我会尝试降级并通知您,谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      相关资源
      最近更新 更多