如何解决「使用的多后端Keras版本不支持TensorFlow 2.0」报错
问题根因
- 报错核心原因是代码混用了独立安装的第三方Keras包和TensorFlow 2内置的
tf.keras包,独立版本的Keras不兼容TensorFlow 2,调用时就会触发该报错。
修正方案
修改导入规则,所有Keras相关接口统一使用TensorFlow内置的tf.keras下的实现,删除独立Keras的导入、以及tensorflow.python.keras的私有接口导入,清理重复导入项。修正后的完整代码如下:
from sklearn.model_selection import train_test_split import tensorflow as tf from tensorflow.keras import layers, optimizers, callbacks from tensorflow.keras.layers import Input, Dense, Dropout, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D, Activation, Flatten from tensorflow.keras.models import Sequential, load_model, Model from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras import datasets from tensorflow.keras.optimizers import Adam from tensorflow.keras.utils import plot_model from tensorflow.keras.callbacks import EarlyStopping model = Sequential() model.add(Conv2D(input_shape=(32,32,4),filters=64,kernel_size=(3,3),padding="same", activation="relu")) model.add(Conv2D(filters=64,kernel_size=(3,3),padding="same", activation="relu")) model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2))) model.add(Conv2D(filters=128, kernel_size=(3,3), padding="same", activation="relu")) model.add(Conv2D(filters=128, kernel_size=(3,3), padding="same", activation="relu")) model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2))) model.add(Flatten()) model.add(Dense(units=1024,activation="relu")) model.add(Dense(units=1024,activation="relu")) model.add(Dense(units=1, activation="linear")) #compile model optimizer = tf.keras.optimizers.Adam(learning_rate=0.0001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) model.compile(loss='mean_squared_error', optimizer=optimizer, metrics=['mae'])
注意事项
- 后续开发不要调用独立Keras的接口,也不要使用
tensorflow.python.keras下的私有接口,全部统一用tf.keras前缀的公开接口即可避免此类兼容性问题。
内容的提问来源于stack exchange,提问作者rayan
相关产品推荐
相关产品推荐

