如何修复Keras中AttributeError: module 'keras.backend' has no attribute 'set_image_dim_ordering'错误
修复
AttributeError: module 'keras.backend' has no attribute 'set_image_dim_ordering' 的方案 这个报错我碰到过好多次啦,主要是因为你用的Keras版本(大概率是Keras 2.0+ 或者整合进TensorFlow的tf.keras)已经把set_image_dim_ordering这个旧API给移除了。下面给你几个靠谱的解决办法:
1. 替换为新版API(仅当你真的需要手动设置时)
在Keras 2.0之后,set_image_dim_ordering被替换成了set_image_data_format,对应的参数也从'tf'/'th'改成了更明确的'channels_last'(对应TensorFlow的NHWC格式,就是你原来想设置的'tf'模式)和'channels_first'(对应Theano的NCHW格式)。如果你的代码确实需要手动指定维度顺序,可以这么改:
from keras import backend as K K.set_image_data_format('channels_last')
2. 直接删掉这段代码(更推荐)
如果你用的是TensorFlow作为Keras后端(现在绝大多数项目都是这个配置),其实完全没必要手动设置这个参数——因为TensorFlow默认的维度格式就是channels_last,Keras会自动适配后端的默认规则。直接把那两行代码删掉,程序就能正常跑起来。
3. 确认你的Keras导入方式(针对tf.keras用户)
如果你是用TensorFlow内置的tf.keras(现在很多人会这么用),那keras.backend的一些旧API位置有调整,正确的导入和设置方式应该是:
from tensorflow.keras import backend as K # 真要设置的话用这句 K.set_image_data_format('channels_last')
不过还是那句话,TF环境下默认就是这个格式,额外设置纯属多此一举~
内容的提问来源于stack exchange,提问作者Veer
相关产品推荐
相关产品推荐

