![](/img/trans.png)
[英]Fix “AttributeError: module 'tensorflow' has no attribute 'get_default_graph'”
[英]How to fix "AttributeError: module 'tensorflow' has no attribute 'get_default_graph'"?
我正在嘗試運行一些代碼來創建 LSTM model 但出現錯誤:
AttributeError: module 'tensorflow' has no attribute 'get_default_graph'
我的代碼如下:
from keras.models import Sequential
model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))
model.add(LSTM(17))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
我發現其他人也有類似的問題,他們更新了 tensorflow 並且它有效; 但我的是最新的,但仍然無法正常工作。 我是使用 keras 和機器學習的新手,所以如果這很愚蠢,我深表歉意!
請試試:
from tensorflow.keras.models import Sequential
代替
from keras.models import Sequential
對於 tf 2.1.0,我使用了tf.compat.v1.get_default_graph()
- 例如:
import tensorflow as tf
sess = tf.compat.v1.Session(graph=tf.compat.v1.get_default_graph(), config=session_conf)
tf.compat.v1.keras.backend.set_session(sess)
對於最新的 tensorflow 2,將上面的代碼替換為下面的代碼,並進行一些更改
有關詳細信息,請查看 keras 文檔: https ://www.tensorflow.org/guide/keras/overview
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential, load_model
model = tf.keras.Sequential()
model.add(layers.Dense(32, input_dim=784))
model.add(layers.Activation('relu'))
model.add(layers.LSTM(17))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.Adam(0.01), metrics=['accuracy'])
我有同樣的問題。 我試過了
from tensorflow.keras.models import Sequential
和
from keras.models import Sequential
它們都不起作用。 所以我更新了 tensorflow、keras 和 python:
$conda update python
$conda update keras
$conda update tensorflow
要么
pip install --upgrade tensorflow
pip install --upgrade keras
pip install --upgrade python
我的 tensorflow 版本是 2.1.0; 我的 keras 版本是 2.3.1; 我的 python 版本是 3.6.10。 在我卸載 keras 並重新安裝 keras 之前,什么都不起作用:
pip uninstall keras
pip install keras --upgrade
它是由於 tensorflow 版本的變化而發生的 :: Replace
tf.get_default_graph()
經過
tf.compat.v1.get_default_graph()
結果我使用了錯誤的版本 (2.0.0a0),所以我重置到最新的穩定版本 (1.13.1) 並且它可以工作。
更換所有keras.something.something
與tensorflow.keras.something
和使用:
import tensorflow as tf
from tensorflow.keras import backend as k
降級將解決問題,但如果您想使用最新版本,則必須嘗試以下代碼: from tensorflow import keras
和 ' from tensorflow.python.keras import backend as k
這對我from tensorflow.python.keras import backend as k
使用以下內容:
tf.compat.v1.disable_eager_execution()
print(tf.compat.v1.get_default_graph())
它適用於 tensorflow 2.0
為了解決這個問題,我使用了下面的代碼:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy
是的,它不起作用,因為您使用的是 tensorflow 的更新版本,即 tensorflow == 2.0 ,舊版本的 tensorflow 可能會有所幫助。 我遇到了同樣的問題,但我使用以下代碼修復了它。
嘗試:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout
反而:
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
Keras集成到TensorFlow 2.0中
下面的文章為我解決了這一問題。 關鍵點是:
認識到並做出更改后,我的代碼示例在此處和此處進行了一些小的更改。
https://www.pyimagesearch.com/2019/10/21/keras-vs-tf-keras-whats-the-difference-in-tensorflow-2-0/
這也發生在我身上。 原因是你的 tensorflow 版本。 嘗試獲取舊版本的 tensorflow。 另一個問題可能是您的項目中有一個名為 tensorflow.py 的 python 腳本。
是的,該代碼不適用於此版本的 tensorflow tensorflow == 2.0.0 。 遷移到 2.0.0 之前的版本會有所幫助。
假設人們參考此線程將使用越來越多的 tensorflow 2:
Tensorflow 2 進一步集成了 keras api,因為 keras 的設計/開發非常明智。 答案是如果你正在使用tensorflow 2非常容易,也說明這里:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation, LSTM
model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))
model.add(LSTM(17))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss=tensorflow.keras.losses.binary_crossentropy, optimizer=tensorflow.keras.optimizers.Adam(), metrics=['accuracy'])
這就是你如何改變一個人會使用來自keras官方頁面的MNIST之類的東西,只需替換tensorflow.keras
而不是keras
並在gpu上運行它;
from __future__ import print_function
import tensorflow
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten
from tensorflow.keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras import backend as K
batch_size = 1024
num_classes = 10
epochs = 12
# input image dimensions
img_rows, img_cols = 28, 28
# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()
if K.image_data_format() == 'channels_first':
x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
input_shape = (1, img_rows, img_cols)
else:
x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
input_shape = (img_rows, img_cols, 1)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
# convert class vectors to binary class matrices
y_train = tensorflow.keras.utils.to_categorical(y_train, num_classes)
y_test = tensorflow.keras.utils.to_categorical(y_test, num_classes)
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
activation='relu',
input_shape=input_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(num_classes, activation='softmax'))
model.compile(loss=tensorflow.keras.losses.categorical_crossentropy,
optimizer=tensorflow.keras.optimizers.Adadelta(),
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
對於 TensorFlow 2.0,請使用與 tensorflow 捆綁的 keras。
嘗試更換keras.models
與tensorflow.python.keras.models
或tensorflow.keras.models
:
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers.core import Dense, Activation
這應該可以解決問題。
!pip uninstall tensorflow
!pip install tensorflow==1.14
這對我有用……在 hrnetv2 上工作……ty
這對我有用。 請使用以下導入
from tensorflow.keras.layers import Input
要解決 TensorFlow 中的版本問題,最好使用以下技術導入 v1(版本 1 或 TensorFlow 1.x),我們還可以禁用 TensorFlow 2.x 行為。
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
可以參考以下鏈接查看Tensorflow 1.x和2.x的映射關系
請盡量簡潔!
首先-->
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
然后-->
model = keras.Sequential(
[
layers.Dense(layers.Dense(32, input_dim=784)),
layers.Dense(activation="relu"),
layers.Dense(LSTM(17))
]
)
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.Adam(0.01), metrics=['accuracy'])
瞧!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.