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
サンプルコードは問題なく動作したよう。
