1. ホーム
  2. Qt

AttributeError: モジュール 'tensorflow' には 'get_default_graph' という属性がありません。

2022-02-11 03:54:22

今日も落ち込んでいます。python3.7で必要なパッケージをなんとかインストールし、コードを実行すると上記のようなエラーが発生しました。

WARNING: Logging before flag parsing goes to stderr.
W0701 11:00:32.062613 139666427000576 deprecation_wrapper.py:119] From /home/clh/anaconda3/lib/python3.7/site-packages/keras/backend/ tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.

W0701 11:00:32.131539 139666427000576 deprecation_wrapper.py:119] From /home/clh/anaconda3/lib/python3.7/site-packages/keras/backend/ tensorflow_backend.py:517: The name tf.placeholder is deprecated. please use tf.compat.v1.placeholder instead.

W0701 11:00:32.141761 139666427000576 deprecation_wrapper.py:119] From /home/clh/anaconda3/lib/python3.7/site-packages/keras/backend/ tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.

W0701 11:00:32.217406 139666427000576 deprecation_wrapper.py:119] From /home/clh/anaconda3/lib/python3.7/site-packages/keras/backend/ tensorflow_backend.py:3976: The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.

W0701 11:00:32.255942 139666427000576 deprecation_wrapper.py:119] From /home/clh/anaconda3/lib/python3.7/site-packages/keras/backend/ tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.

W0701 11:00:32.260227 139666427000576 deprecation.py:506] From /home/clh/anaconda3/lib/python3.7/site-packages/keras/backend/tensorflow _backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.
W0701 11:00:32.316102 139666427000576 deprecation_wrapper.py:119] From /home/clh/anaconda3/lib/python3.7/site-packages/keras/optimizers .py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.

W0701 11:00:32.329323 139666427000576 deprecation_wrapper.py:119] From /home/clh/anaconda3/lib/python3.7/site-packages/keras/backend/ tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.

W0701 11:00:32.493103 139666427000576 deprecation.py:323] From /home/clh/anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/ math_grad.py:1250: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.


コードが少し古いようで、python 3.7のインストールは最新のパッケージでは動作しないので、多くの変更が必要です。

このコンピュータにはたまたま python 3.5 が入っていたので、python 3.5 で実行できるようにインタープリタを修正しました。

しかし、python 3.5で実行すると、kerasがインストールされていなかったので、kerasを再度インストールし、インストールしてから再度実行すると、やはりエラーが報告されました。

これは、インストールされているtensorflowのバージョンが高すぎるのでしょうか?

バージョンを確認する

確かにバージョンはかなり高く、このコードは keras 2.2.2 と tensorflow 1.9.0 で書かれたものです

まあ、インストーラーをアンインストールして、特定のパッケージを再インストールする必要があったのですが。

アンインストールするときに、指定したパスでやると

sudo pip uninstall --target=/usr/local/lib/python3.5/dist-packages tensorflow

この使い方は間違っていると言う

無理やり、pycharmでアンインストールしました

pycharmのファイル内に以下のような設定があり、パッケージを選択し、右のマイナスをクリックし、パスワードを入力し、アンインストールします。

アンインストール後、指定したパスにインストールし、インストールバージョン番号を指定する。

sudo pip install --target=/usr/local/lib/python3.5/dist-packages tensorflow==1.9.0

sudo pip install --target=/usr/local/lib/python3.5/dist-packages keras==2.2.2

kerasをインストールすると、2つのパッケージは互換性がないと表示される

そこで、pycharmで2つのパッケージを再度アンインストールしました。

その後、kerasを再インストールして、ようやくコードが動くようになりました!