You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复使用InceptionV4时出现的'tensorflow'无'get_default_graph'报错

问题解决:AttributeError: module 'tensorflow' has no attribute 'get_default_graph'

问题背景

使用InceptionV4代码时出现上述错误,TensorFlow和Keras版本均为2.5.0。

错误信息

AttributeError
module 'tensorflow' has no attribute 'get_default_graph'
File "C:\Labbb\inception\InceptionV4-master\inceptionv4.py", line 219, in create_inception_v4
init = Input((299,299, 8))
File "C:\Labbb\inception\InceptionV4-master\inceptionv4.py", line 259, in
model = create_inception_v4(load_weights=check)
AttributeError: module 'tensorflow' has no attribute 'get_default_graph'

相关代码片段

def create_inception_v4(nb_classes=int(args["num_classes"]), load_weights=check):
model = create_inception_v4(load_weights=check)
model.compile(loss='categorical_crossentropy', optimizer=keras.optimizers.SGD(lr=float(args['learning_rate']), decay=1e-6, momentum=0.9, nesterov=True), metrics=["accuracy"])
hist = model.fit_generator(train_datagen,steps_per_epoch=int(args['50']),epochs=int(args['3']),verbose=True,validation_data=val_datagen,validation_steps=10,callbacks=[mc, tensorboard])

当前导入代码

from keras.layers import Input, merge, Dropout, Dense, Flatten, Activation
from keras.layers.convolutional import MaxPooling2D, Convolution2D, AveragePooling2D
from keras.layers.normalization import BatchNormalization
from tensorflow.keras.models import Model
from tensorflow.keras import backend as K
from keras.utils.data_utils import get_file
from keras.utils.training_utils import multi_gpu_model
import tensorflow as tf
import keras
from tensorflow.keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
from tensorflow.keras.layers import concatenate
from tensorflow.keras.callbacks import TensorBoard
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.models import Sequential
from tensorflow.keras.utils import Sequence

解决方法

问题出在混用了独立Keras和TensorFlow内置Keras的导入,TensorFlow 2.x里已经删掉了tf.get_default_graph()的直接调用,但独立Keras的部分组件还会试图调用这个已废弃的API。

按下面的步骤修改即可:

  1. 统一所有导入为tensorflow.keras,删除所有直接从keras.开头的导入,全部替换成tensorflow.keras.:

    # 替换所有keras.开头的导入
    from tensorflow.keras.layers import Input, Dropout, Dense, Flatten, Activation, MaxPooling2D, Conv2D, AveragePooling2D, BatchNormalization, concatenate
    from tensorflow.keras.models import Model, Sequential
    from tensorflow.keras import backend as K
    from tensorflow.keras.utils import get_file, to_categorical, Sequence
    from tensorflow.keras.optimizers import SGD
    from tensorflow.keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
    from tensorflow.keras.callbacks import TensorBoard
    import tensorflow as tf
    

    注意:Convolution2D在tensorflow.keras中已更名为Conv2D,merge已被concatenate替代,代码中对应调用也要同步修改。

  2. 调整代码中的API调用:

    • 将Convolution2D替换为Conv2D
    • 将merge替换为concatenate(确保已从tensorflow.keras.layers导入该方法)
    • 将keras.optimizers.SGD改为tensorflow.keras.optimizers.SGD
  3. 卸载独立Keras包:如果环境中安装了独立Keras,建议卸载避免版本冲突:

    pip uninstall keras -y
    
  4. 替换fit_generator为fit:TensorFlow 2.2+版本中fit_generator已被弃用,直接使用model.fit()即可,它会自动处理生成器输入:

    hist = model.fit(train_datagen, steps_per_epoch=int(args['50']), epochs=int(args['3']),
                     verbose=True, validation_data=val_datagen, validation_steps=10,
                     callbacks=[mc, tensorboard])
    

这样修改后,就能彻底解决混用API导致的错误,适配TensorFlow 2.5.0的环境。

内容的提问来源于stack exchange,提问作者Syuuuu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:24:50