很久没有更新技术博客了,最近踩了一个小坑,分享一下。
现在大家在使用Python的时候都会安装Anaconda,因为它很方便轻巧,傻瓜式操作。在安装Anaconda时,我们通常会先指定一个Python版本(3.5, 3.6, 3.7等等),然后配合conda自带的virtual environment功能,可以在服务器上根据不同的需求安装不同类型的深度学习框架以及库。
但是,如果你需要在某个虚拟环境里使用多种深度学习框架时,比如想在名字为A的virtual environment中同时使用Tensorflow, Keras和Caffe的话,这时候就需要注意和确认一下,这三个框架在安装的时候是不是使用了相同版本的依赖库。否则救出出现以下的错误:
通常,上面###是一些python的依赖库,比如numpy, 比如scikit-image等等。而且这种错误一般都是出现在import阶段,也就是说在程序的一开始,这些库就没有被成功加载。
那么如何解决这个问题呢?我们首先来分析出现这个现象的原因。
事情是这样的,因为我们在安装Anaconda的时候会指定一个Python版本,同时Anaconda会为这个Python安装一些基础的依赖库,注意此时我们还没有建立虚拟环境。如果我们这时候使用Anaconda制定的Python来编译Caffe以及安装Keras的话,那么Caffe在运行的时候就会被绑定到编译时使用的这个依赖库。好了,如果这时候我们又建立一个虚拟环境A,并且在A里面安装Tensorflow的话,那么tf的依赖库就是虚拟环境A当中的了。而我们都知道虚拟环境里的依赖库和Anaconda本身默认安装的库是不一定有相同版本的(包括Python版本和库的版本),因此就会出现上文中的Runtime error。
因此,解决方案也就一目了然了:那就是把Anaconda自带的依赖库以及虚拟环境中的库都更新到最新,这样就解决了版本不一致的问题。也就是以下命令(###是报错的库名字):
领取专属 10元无门槛券
私享最新 技术干货