前言
本篇解决三个跑训练时碰到的bug
报错1 使用MinkowskiEngine时,报
ImportError: [...]/venv/lib/python3.8/site-packages/MinkowskiEngineBackend/_C.cpython-38-x86_64-linux-gnu.so:
undefined symbol: _ZN2at5emptyEN3c108ArrayRefIlEENS0_13TensorOptionsENS0_8optionalINS0_12MemoryFormatEEE
解决方法 这个报错在官方issue上找到了,原因就是当前使用的cuda版本,和编译MinkowskiEngine时的版本不匹配,因此要切换成之前的cuda版本。
报错2 导入pytorch的SummaryWritter模块时,报:
AttributeError: module ‘distutils‘ has no attribute ‘version‘
解决方法 该报错可能是pytorch版本太低,或者setuptools版本太高导致的。不过除了升级pytorch和降级setuptools这两种解决方法外,pytorch社区开发人员也给了一种简单的解决方法,在报错的__init__.py文件中,添加以下代码:
from pkg_resources import packaging
# 把distutils.version.LooseVersion注释掉
LooseVersion = packaging.version.Version
随后导入相关模块不再报错,问题解决。
报错3 pytorch计算时,使用floor
算子的操作报_vml_cpu not implemented for Long
,原因是floor
这个算子只能对浮点数进行计算。
解决方法 把用到floor算子的函数的输入Tensor转成浮点型.float()
就完事儿了。