Tensorflowの再設定(2.13.0)

■環境の再設定。
以前Tensorflow 2.2の設定を行ったけど改めてサンプルを実行したらエラーが出た。ChatGPTに頼って環境を再設定した。
今回実行したサンプルコードは、初めに下のようにライブラリをインポートしていたけど前回はなかった。前回試したサンプルコードではTensorflowは使っていなかったよう。

import tensorflow as tf
from tensorflow import keras

from tf_agents.environments import gym_wrapper, py_environment, tf_py_environment
from tf_agents.agents.dqn import dqn_agent
from tf_agents.networks import network
from tf_agents.replay_buffers import tf_uniform_replay_buffer
from tf_agents.policies import policy_saver
from tf_agents.trajectories import time_step as ts
from tf_agents.trajectories import trajectory
from tf_agents.specs import array_spec
from tf_agents.utils import common
from tf_agents.drivers import dynamic_step_driver, dynamic_episode_driver

import numpy as np

本から写したサンプルコードを実行し、エラーが出たらChatGPTに聞いて対応を繰り返す。PythonのVersionは3.8.10で変更せず。ChatGPTの回答は必ずしも正しいとは限らないとのことなので参考程度。概要は下のような感じ。

[エラー]
 TypeError: Descriptors cannot be created directly.
[ChatGPT]
 TensorFlow Agents(tf-agents)や他の TensorFlow 関連ライブラリは、内部で Protocol Buffers(protobuf) を使用しています。protobuf の新しいバージョン(4.x 以降)では、Python API の一部が変更され、古い形式の _pb2.py ファイルとの互換性がなくなっています。
[対応]
 pip install protobuf==3.20.* で再インストール。
=================

[エラー]
 AttributeError: module 'numpy' has no attribute 'object'.
[ChatGPT]
 np.object は、NumPy 1.20 で非推奨(deprecated)となり、NumPy 1.24 で完全に削除されました。これは、tf-agents などのライブラリが内部的にまだ np.object を使っていることが原因です。
[対応]
 pip install numpy==1.24.* で再インストール。
=================

[エラー]
 ImportError: This version of TensorFlow Probability requires TensorFlow version >= 2.13; Detected an installation of version 2.2.0. Please upgrade TensorFlow to proceed.
[ChatGPT]
 tensorflow-probability の新しいバージョンは TensorFlow ≥ 2.13 を要求しています。しかし、あなたの環境には TensorFlow 2.2.0 がインストールされているため、エラーになります。
[対応]
 pip install tensorflow==2.13.0 で再インストール。
=================

[エラー]
 ImportError: cannot import name 'keras' from 'tensorflow' (unknown location)
[ChatGPT]
 tensorflow.keras のインポートが失敗しており、主に以下のような 環境の不整合やインストール不備 が原因です。
1.TensorFlow のインストールに失敗している
2.同名パッケージが干渉していないか確認
[対応]
 pip list | find "keras" で「keras-nightly 2.5.0.dev2021032900」が表示され、ChatGPTによると、
  keras-nightly は TensorFlow とは 完全に独立した開発版の Keras です。
  keras-nightly は tensorflow.keras と互換性がなく、インストールされていると from tensorflow import keras が壊れます。
 とのこと。
 keras-nightlyを削除。
=================

[エラー]
 AttributeError: module 'numpy' has no attribute 'typeDict'
[ChatGPT]
 NumPy 1.20で np.typeDict は非推奨になり、NumPy 1.24で完全に削除されました。
 しかしあなたの環境の scipy バージョンはまだ古く、np.typeDict を参照しているためエラーになります。
[修正]
 pip install scipy==1.10.1 で再インストール。
=================

最終的には下のVersionに更新した。

Package Version
 keras 2.13.1
 numpy 1.24.4
 scipy 1.10.1
 tensorflow 2.13.0
 tf-agents 0.17.0

サンプルコードは問題なく動作したよう。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です