建议Ctrl+F,输入关键词查找该网页有没有你遇到的bug
或者看左侧的目录

下面所有问题以及解决方法都是本人亲自遇到,且根据解决方法成功解决的,如果仍然有问题欢迎各位评论区讨论。

版本问题

1. 使用不用版本的Pytorch训练的权重模型无法加载。

pickle.UnpicklingError: A load persistent id instruction was encountered,
but no persistent_load function was specified.

Bug原因: 训练和测试的torch版本不一致。训练的时候是1.x,测试的时候是1.m。
解决办法: 先在1.x版本下加载模型,然后在保存的时候设置_use_new_zipfile_serialization=False就行了。

1
torch.save(model.state_dict(), model_path, use_new_zipfile_serialization=False)

2. ValueError: numpy.ufunc size changed, may indicate binary incompatibility.

numpy版本过低导致,需要对numpy版本进行升级即可。

1
2
3
pip uninstall numpy
pip install numpy
pip install --upgrade numpy

3. maskrcnn训练提示:FutureWarning: Input image dtype is bool

参考博客:https://blog.csdn.net/qq_39483453/article/details/118598535

scikit-image=0.17.2 的版本存在的问题,修改scikit-image包版本为0.16.2

1
pip install -U scikit-image==0.16.2

环境配置/包安装

1. No module named ‘pycocotools‘

参考博客:超简单解决No module named ‘pycocotools‘

各版本pycocotools.whl文件

点击连接中任意一个版本,(我安装的是2.0.0),下载的时候一定要注意对应的python版本,cp36指的是python3.6,cp37和cp38同理。

下载之后,放入你喜欢的文件夹中,然后启动命令行,进入whl文件所在的目录,输入以下命令即可,注意install后面是你自己下载的whl文件全称

1
2
3
4
activate tensorflow
E:
cd E:/windows/Downloads
pip install pycocotools_windows-2.0-cp36-cp36m-win_amd64.whl

2. 成功解决AttributeError: ‘str‘ object has no attribute ‘decode‘

参考博客:https://blog.csdn.net/qq_41185868/article/details/82079079

1
pip install 'h5py<3.0.0' -i https://pypi.tuna.tsinghua.edu.cn/simple

3. 使用Google Colab时,将Tensorflow版本转换到1.x版本

参考博客:https://blog.csdn.net/qq_44262417/article/details/105222696

1
%tensorflow_version 1.x

4. 长时间卡在Successfully opened dynamic library libcudnn.so.7

原因是tensorflow版本与CUDA版本不匹配,我使用的是cuda11.6与tensorflow2.2.0。

经过查找,可以使用的组合包括CUDA11.2+Tensorflow2.5.0。

数据格式不匹配

1. TypeError: expected str, bytes or os.PathLike object, not NoneType

出现这个问题多半是没有指定路径,上述问题翻译过来是,期望一个字符串或者字节路径,而不是默认值,出现这个问题需要把指定路径的变量赋值即可。这种错误多半出现在运行开源代码时出现。

检查代码中对应位置的字符串变量,是否传入了确定的值,而非None。

多GPU问题

1. ValueError: Memory growth cannot differ between GPU devices

多显卡问题。默认计算时使用所有的显卡,但是set_memory_growth只为了部分显卡设定,就造成了显卡模式不匹配的问题。比较简单的解决方法如下,在报错的代码之前添加:

1
os.environ['CUDA_VISIBLE_DEVICES']='0'

而且需要知道一点,那就是os.environ[‘CUDA_VISIBLE_DEVICES’]='0’这样的设置必须在调用TensorFlow框架之前声明否则不生效。