keras与tensorflow版本匹配问题

今天运行 迁移学习 的代码,过程中遇到环境方面的问题,折腾了好久;最终算是搞定了,将过程记录如下

电脑上本来只安了tensorflow 1.12,没有单独安keras;之前用keras都是通过tensorflow.keras的方式;有时候keras和tensorflow.keras的组织结构会不同,但大多数都能找到相应的。比如老师给的代码是"from keras.optimizers import SGD",改成"from tensorflow.keras.optimizers import SGD"就能用了

今天遇到的这个问题按以往的办法处理不了
代码中导入模块 from keras.applications import imagenet_utils ,改为 from tensorflow.keras.applications import imagenet_utils 不行,因为tensorflow 1.12根本没有 imagenet_utils;
使用pip list 发现有装 keras_applications,而它下面是有 imagenet_utils的;于是将导入语句改为 from keras_applications import imagenet_utils;导入语句OK

但是在后面执行语句 image = imagenet_utils.preprocess_input(image) 时报错:keras: AttributeError: 'NoneType' object has no attribute 'image_data_format'
这个报错和backend相关,keras的beckend是tensorflow;因为使用 from keras_applications import imagenet_utils 替代 from keras.applications import imagenet_utils ,分析如果把keras独立装上是不是就可以了?

于是就用 pip install keras 装了keras;pip list查看keras的版本是2.3.1(安装之前先用系统还原功能创建了还原点,想着如果不行还可以把系统恢复了)
装好keras后,import keras试了下,发现不行,报错tensowflow找不到啥啥啥
在网上看了,有人说把tensorflow更新下就行了(pip install -U tensorflow);使用命令升级tensorflow,升级失败;用conda升级也失败
在折腾的过程中把 pip 更新到最新版本

折腾了半天,没用,就用系统还原把系统给还原到之前创建的还原点(装Keras之前的状态)
然后敲 pip list 发现有报错;脑袋一热,把pip 给卸载了:python -m pip uninstall pip
然后想手动把pip给安装上,试了网上好多办法,都没法把pip给装回来;都准备把anaconda给删了,然后再重装
后来幸运的是看到了 https://www.runoob.com/w3cnote/python-pip-install-usage.html 上的方法,终于给装回来了
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本
$ sudo python get-pip.py    # 运行安装脚本

想了想,单独装Keras为啥 import keras不行,是不是装的keras和tensorflow的版本不匹配?
上网看了下,果然,tensorflow1.12 要用 keras2.2.4 版本,而之前装的2.3.1
把keras先卸了,然后装下2.2.4版本的 pip install keras==2.2.4

然后再运行代码,可以了

你可能感兴趣的:(AI,Keras,tensorflow,pip,python,AI)