最近重新安装了Tensorflow的训练环境,并不是一帆风顺,比起PyTorch的安装,Tensorflow还是问题多多,比如字符编码、PyCocoTools等,在此记录下安装和使用过程中的常见问题,但并不对安装过程进行详细记录
无法加载Tensorflow
在使用GPU版本情况下,目前我直接pip安装之后,安装的是1.13.1版本,但是可能并没有去查询下1.13.1版本支持的CUDA版本,任意安装了最新的版本,结果导致简单验证 import tensorflow
报无法加载的问题,错误就不贴了,基本就是CUDA版本不对应的问题。后续查询了在1.13版本之前的几个版本支持的是CUDA 9,而1.13开始支持CUDA 10。因此按照对应关系去下载安装对应的CUDA版本即可,cuDNN下载页面有和CUDA对应的版本。
安装pycocotools
安装成功之后,随便跑一下训练,就会缺失一些库,一般pip安装即可,但是有些库在有些平台会有问题,比如下面的pycocotools在Windows平台就不能直接安装,需要单独的安装方式,首先必须安装VC 2015 编译器,其次不能使用官方的代码,因此还需要确保系统安装了git工具,一切就绪后就可以使用下面的命令安装了
pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI |
如果你本机没有VC,且不想安装巨大的IDE,可以考虑安装编译器即可,下载 https://go.microsoft.com/fwlink/?LinkId=691126 安装纯编译器即可。
UnicodeDecodeError
在上面的pycocotools的安装过程中,可能会遇到类似下面的错误
Traceback (most recent call last): |
这其实是文件字符集和控制台的字符集转换导致的问题,因为Windows上的控制台字符集一般都是936,也就是GBK,因此需要修改Python目录下的 Lib/site-packages/pip/compat/__init__.py
大概在75行,将 utf-8
修改为 gbk
即可,类似
if sys.version_info >= (3,): |
can’t pickle dict_values objects
在训练 object detection 的预训练模型的时候,可能会产生下面的报错
Invalid argument: TypeError: can't pickle dict_values objects |
按照提示将 object_detection\metrics\coco_tools.py
的118行加上 list 即可,如下
results.dataset['categories'] = copy.deepcopy(list(self.dataset['categories'])) |
Failed to create a directory
训练时报错,最后打印的错误日志如下
tensorflow.python.framework.errors_impl.NotFoundError: Failed to create a directory: |
应该是无法创建目录的问题,修改Tensorflow安装目录下的 tensorflow\python\saved_model\builder_impl.py
中,将原来的代码
file_io.recursive_create_dir(self._export_dir) |
替换为下面的代码
os.makedirs(compat.as_str(self._export_dir), exist_ok=True) |
应该有两处。