tensorflow加载预训练模型的时候报错:ValueError:No OP Named DecodeBmp in difined operations的解决
我在实验室里的一个服务器上训练了一个模型,然后在另一个服务器上加载模型,出现以下错误:ValueError:No OP Named DecodeBmp in difined operations。
看了一下出错的地方,是在tensorflow内部出错,不好调试,于是google之后,发现这是因为tenflow版本不兼容的问题,需要1.3以上的版本来加载模型。
查看了一下两台服务器的tensorflow-gpu版本,果然训练服务器的版本是1.4,而加载模型的服务器版本是1.2。
解决方案:pip install --ignore-installed --upgrade tensorflow-gpu==1.4
以上这条指令可以按照你的需求在线安装对应的tensorflow-GPU版本。
最后,专门用安装低版本tensorflow的服务器中训练了一个模型,放在安装高版本tensorflow的服务器中运行,发现是没有问题的,这证明:目前来看,tensorflow的向下兼容性还是很好的。
---------------------------------------- 第一条分割线 -----------------------------------------------
但是在安装了更高版本的tensorflow时,报出了另一个错误:importError:libcudnn.so.6: cannot open shared object file: No such file or directory。
通过查询得知,这是因为tensorflow-gpu==1.4以上版本需要cudnn6.0以上的支持,但是下载了cudnn6.0并按照
1、ubuntu16.04下安装CUDA,cuDNN及tensorflow-gpu版本过程
2、Ubuntu 14.04 安装 nvidia cudnn
中安装cudnn的方式进行安装,但是并没有解决这个问题。
最后,只能暂时卸载tensorflow-gpu 用tensorflow-cpu是可以跑出结果的。通过这次经历,也领悟到了创建虚拟环境的重要性。这样就不用每次重复卸载,安装tensorflow-gpu了。
---------------------------------------- 第二条分割线 ---------------------------------------------
不甘心,又尝试了第二种安装方式,也就是deb的安装方式(不知道这种叫法对不对,欢迎拍砖),具体步骤是:
1、官方上下载deb安装包
2、随便放在一个文件夹里,并打开终端执行:
sudo dpkg -i libcudnn6_6.0.21-1+cuda8.0_amd64.deb
3、接下来,关闭终端,在pycharm中运行深度学习程序,发现可以运行。
参考来源:NVIDIA官方安装教程