【问题标题】:Error 'module 'tensorflow' has no attribute 'get_default_graph'?错误'模块'tensorflow'没有属性'get_default_graph'?
【发布时间】:2020-08-04 18:44:52
【问题描述】:

每次我尝试在 Keras 上运行我的模型时,我都会收到此错误“模块 'tensorflow' 没有属性 'get_default_graph',并且我已经尝试了之前答案中的几乎所有内容。我正在尝试使用 Keras 后端创建一个 3D-CNN。过去几天它工作,但昨天我每次尝试创建这个模型时都开始收到这个错误。这是我的代码:

# importing important packages

import os
import numpy as np
import tensorflow as tf
import keras 
from keras.models import Sequential, Model
from keras.layers import Dense, Flatten, Conv3D, MaxPooling3D, Dropout, BatchNormalization, LeakyReLU
from tensorflow.python.keras import backend as K
from keras.regularizers import l2
from sklearn.utils import compute_class_weight

#import dataset
import numpy as np
DATA_URL = '/content/drive/My Drive/icafiledata4.npz'
with np.load(DATA_URL) as data:
  X = data['arr_0']
  y = data['arr_1']

BATCH_SIZE = 128
input_shape=(64, 64, 40, 20)


# Create the model
model = Sequential()

model.add(Conv3D(64, kernel_size=(3,3,3), activation='relu', input_shape=input_shape, kernel_regularizer=l2(0.005), bias_regularizer=l2(0.005), data_format = 'channels_first', padding='same'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(Conv3D(64, kernel_size=(3,3,3), activation='relu', input_shape=input_shape, kernel_regularizer=l2(0.005), bias_regularizer=l2(0.005), data_format = 'channels_first', padding='same'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(BatchNormalization(center=True, scale=True))

model.add(Conv3D(64, kernel_size=(3,3,3), activation='relu', input_shape=input_shape, kernel_regularizer=l2(0.005), bias_regularizer=l2(0.005), data_format = 'channels_first', padding='same'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(Conv3D(64, kernel_size=(3,3,3), activation='relu', input_shape=input_shape, kernel_regularizer=l2(0.005), bias_regularizer=l2(0.005), data_format = 'channels_first', padding='same'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(BatchNormalization(center=True, scale=True))

model.add(Flatten())
model.add(BatchNormalization(center=True, scale=True))
model.add(Dense(128, activation='relu', kernel_regularizer=l2(0.01), bias_regularizer=l2(0.01)))
model.add(Dropout(0.5))
model.add(Dense(128, activation='relu', kernel_regularizer=l2(0.01), bias_regularizer=l2(0.01)))
model.add(Dense(1, activation='sigmoid', kernel_regularizer=l2(0.01), bias_regularizer=l2(0.01)))
 
# Compile the model
model.compile(optimizer = tf.keras.optimizers.Adam(lr=0.001), loss='binary_crossentropy', metrics=['accuracy'])

有人有什么建议吗?非常感谢! 附加信息:Tensorflow 2.2.0、keras 2.3.0

【问题讨论】:

  • 不要混用 kerastf.keras。在您的代码中只使用其中一个,而不是同时使用。

标签: python numpy tensorflow keras deep-learning


【解决方案1】:

请尝试:

from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Dense, Flatten, Conv3D, MaxPooling3D, Dropout, BatchNormalization, LeakyReLU
from tensorflow.keras.regularizers import l2

代替:

import keras 
from keras.models import Sequential, Model
from keras.layers import Dense, Flatten, Conv3D, MaxPooling3D, Dropout, BatchNormalization, LeakyReLU
from keras.regularizers import l2

TensorFlow 2.0 及以上版本内置keras;无需将 Keras 单独加载到您的环境中,只需更改导入语句

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-09
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多