Keras实例化Xception模型报错TypeError:softmax参数axis异常求助
解决Keras实例化Xception模型时的
TypeError: softmax() got an unexpected keyword argument 'axis'错误 这个问题我之前也碰到过,核心是Keras和TensorFlow的版本不兼容,具体原因很明确:
- 你用的Keras 2.1.6在调用TensorFlow后端的softmax函数时,用了
axis这个参数名 - 但你的TensorFlow 1.4.0版本里,
tf.nn.softmax只认dim参数(axis是TensorFlow 1.5及以后才新增的参数名)
下面给你几个可行的解决办法,按推荐程度排序:
1. 升级TensorFlow到兼容版本
最省心的方式就是把TensorFlow升级到1.5.0或更高版本,完美匹配Keras 2.1.6的API:
# CPU版本 pip install tensorflow==1.5.0 --upgrade # GPU版本 pip install tensorflow-gpu==1.5.0 --upgrade
2. 降级Keras适配现有TensorFlow
如果因为环境限制不能升级TensorFlow,那就把Keras降级到2.1.5版本——这个版本的Keras在调用softmax时会用dim参数,刚好适配TF1.4.0:
pip install keras==2.1.5 --upgrade
3. 临时修改Keras后端代码(应急用,不推荐)
要是暂时没法升级/降级,可以手动改Keras的后端代码凑合用:
找到你环境里的/usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.py文件,定位到softmax函数的定义(大概在2963行):
return tf.nn.softmax(x, axis=axis)
把它改成:
return tf.nn.softmax(x, dim=axis)
⚠️ 注意:这种修改只是临时的,下次重新安装Keras就会失效,仅作为应急方案。
验证修复
改完之后再跑你的测试代码:
import tensorflow as tf from keras.applications import Xception height = 299 width = 299 num_classes = 1000 # Instantiate model model = Xception(weights=None, input_shape=(height, width, 3), classes=num_classes)
应该就能顺利实例化Xception模型了。
内容的提问来源于stack exchange,提问作者DeltaIV
相关产品推荐
相关产品推荐

