

以下のコードを実行すると

> AttributeError: module 'tensorflow.python.keras.backend' has no attribute
> 'get_graph'

と表示されます。何故でしょうか？  
Tensorflowのバージョンは1.15.0  
Kerasのバージョンは2.3.1です。

[code]

    import keras
    from keras.models import Sequential
    from keras.layers import Dense, Dropout, Flatten
    from keras.layers import Conv2D, MaxPooling2D
    from keras.optimizers import RMSprop 
    from keras.datasets import mnist
    import matplotlib.pyplot as plt
    
    # 入力と出力を指定 --- (*1)
    im_rows = 28 # 画像の縦ピクセルサイズ
    im_cols = 28 # 画像の横ピクセルサイズ
    im_color = 1 # 画像の色空間/グレイスケール
    in_shape = (im_rows, im_cols, im_color)
    out_size = 10
    
    # MNISTのデータを読み込み 
    (X_train, y_train), (X_test, y_test) = mnist.load_data()
    # 読み込んだデータをの三次元配列に変換 --- (*1a)
    X_train = X_train.reshape(-1, im_rows, im_cols, im_color)
    X_train = X_train.astype('float32') / 255
    X_test = X_test.reshape(-1, im_rows, im_cols, im_color)
    X_test = X_test.astype('float32') / 255
    # ラベルデータをone-hotベクトルに直す
    y_train = keras.utils.np_utils.to_categorical(y_train.astype('int32'),10)
    y_test = keras.utils.np_utils.to_categorical(y_test.astype('int32'),10)
    
    # CNNモデル構造を定義 --- (*2)
    model = Sequential()
    model.add(Conv2D(32, 
              kernel_size=(3, 3),
              activation='relu',
              input_shape=in_shape))
    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(out_size, activation='softmax'))
    
    # モデルをコンパイル --- (*3)
    model.compile(
        loss='categorical_crossentropy',
        optimizer=RMSprop(),
        metrics=['accuracy'])
    
    # 学習を実行 --- (*4)
    hist = model.fit(X_train, y_train,
              batch_size=128, 
              epochs=12,
              verbose=1,
              validation_data=(X_test, y_test))
    
    # モデルを評価 --- (*5)
    score = model.evaluate(X_test, y_test, verbose=1)
    print('正解率=', score[1], 'loss=', score[0])
    
    # 学習の様子をグラフへ描画 --- (*6)
    # 正解率の推移をプロット
    plt.plot(hist.history['acc'])
    plt.plot(hist.history['val_acc'])
    plt.title('Accuracy')
    plt.legend(['train', 'test'], loc='upper left')
    plt.show()
    
    # ロスの推移をプロット
    plt.plot(hist.history['loss'])
    plt.plot(hist.history['val_loss'])
    plt.title('Loss')
    plt.legend(['train', 'test'], loc='upper left')
    plt.show()
    
    ---------------------------------------------
    以下エラー内容
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-1-20848a701fc1> in <module>
         27 
         28 # CNNモデル構造を定義 --- (*2)
    ---> 29 model = Sequential()
         30 model.add(Conv2D(32, 
         31           kernel_size=(3, 3),
    
    ~/opt/anaconda3/envs/python/lib/python3.7/site-packages/keras/engine/sequential.py in __init__(self, layers, name)
         85 
         86     def __init__(self, layers=None, name=None):
    ---> 87         super(Sequential, self).__init__(name=name)
         88         self._build_input_shape = None
         89 
    
    ~/opt/anaconda3/envs/python/lib/python3.7/site-packages/keras/legacy/interfaces.py in wrapper(*args, **kwargs)
         89                 warnings.warn('Update your `' + object_name + '` call to the ' +
         90                               'Keras 2 API: ' + signature, stacklevel=2)
    ---> 91             return func(*args, **kwargs)
         92         wrapper._original_function = func
         93         return wrapper
    
    ~/opt/anaconda3/envs/python/lib/python3.7/site-packages/keras/engine/network.py in __init__(self, *args, **kwargs)
         94         else:
         95             # Subclassed network
    ---> 96             self._init_subclassed_network(**kwargs)
         97 
         98     def _base_init(self, name=None):
    
    ~/opt/anaconda3/envs/python/lib/python3.7/site-packages/keras/engine/network.py in _init_subclassed_network(self, name)
        292 
        293     def _init_subclassed_network(self, name=None):
    --> 294         self._base_init(name=name)
        295         self._is_graph_network = False
        296         self._expects_training_arg = has_arg(self.call, 'training')
    
    ~/opt/anaconda3/envs/python/lib/python3.7/site-packages/keras/engine/network.py in _base_init(self, name)
        107         if not name:
        108             prefix = self.__class__.__name__.lower()
    --> 109             name = prefix + '_' + str(K.get_uid(prefix))
        110         self.name = name
        111 
    
    ~/opt/anaconda3/envs/python/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py in get_uid(prefix)
         72     """
         73     global _GRAPH_UID_DICTS
    ---> 74     graph = tf.get_default_graph()
         75     if graph not in _GRAPH_UID_DICTS:
         76         _GRAPH_UID_DICTS[graph] = defaultdict(int)
    
    AttributeError: module 'tensorflow' has no attribute 'get_default_graph'
    
    
[/code]


CC BY-SA 4.0
2019-11-01T05:28:26.807
60173
2019-11-01T07:58:27.000
2019-11-01T07:58:27.000
36247
36247
question
python python3 tensorflow keras
AttributeError: module 'tensorflow.python.keras.backend' has no attribute 'get_graph'について