前提・実現したいこと
サンプルコード引用元を参考にしたのですが、
Keras,Keras-rl,tensorflowのバージョンの組み合わせがおかしいのが原因でエラーが出ています。
kerasとkeras-rlバージョン組み合わせについて
こちらを参考に
Keras==2.1.0,
Keras=rl==0.4.0
としていますがtensorflowに関して記述がなかったため
tensorflow==2.0.0としていますがこれがよくないようです。
発生している問題・エラーメッセージ
tensorflow2.0.0の場合 AttributeError: module 'tensorflow' has no attribute 'get_default_graph' tensorflow1.19.0の場合 UnicodeDecodeError: 'rawunicodeescape' codec can't decode bytes in position 171-172: truncated \UXXXXXXXX escape
該当のソースコード
python
1import gym 2 3# GymのPendulum環境を作成 4env = gym.make("Pendulum-v0") 5 6# 取りうる”打ち手”のアクション数と値の定義 7nb_actions = 2 8ACT_ID_TO_VALUE = {0: [-1], 1: [+1]} 9 10from rl.core import Processor 11 12 13class PendulumProcessor(Processor): 14 15 # Duel-DQNの出力と、Gym環境の入力の違いを吸収 16 def process_action(self, action): 17 return ACT_ID_TO_VALUE[action] 18 19 # Gym環境の報酬の出力と、Duel-DQNの報酬の入力との違いを吸収 20 def process_reward(self, reward): 21 if reward > -0.2: 22 return 1 23 elif reward > -1.0: 24 return 0 25 else: 26 return 0 27 28processor = PendulumProcessor() 29 30from keras.models import Sequential 31from keras.layers import Dense, Activation, Flatten 32 33 34model = Sequential() 35model.add(Flatten(input_shape=(1,) + env.observation_space.shape)) 36model.add(Dense(16)) 37model.add(Activation("relu")) 38model.add(Dense(16)) 39model.add(Activation("relu")) 40model.add(Dense(nb_actions, activation="linear")) 41 42from keras.optimizers import Adam 43 44from rl.agents.dqn import DQNAgent 45from rl.policy import BoltzmannQPolicy 46from rl.memory import SequentialMemory 47 48 49# Duel-DQNアルゴリズム関連の幾つかの設定 50memory = SequentialMemory(limit=50000, window_length=1) 51policy = BoltzmannQPolicy() 52 53# Duel-DQNのAgentクラスオブジェクトの準備 (上記processorやmodelを元に) 54dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, 55 enable_dueling_network=True, dueling_type="avg", target_model_update=1e-2, policy=policy, 56 processor=processor) 57dqn.compile(Adam(lr=1e-3), metrics=["mae"]) 58print(dqn.model.summary()) 59 60# 定義課題環境に対して、アルゴリズムの学習を実行 (必要に応じて適切なCallbackも定義、設定可能) 61# 上記Processorクラスの適切な設定によって、Agent-環境間の入出力を通して設計課題に対しての学習が進行 62dqn.fit(env, nb_steps=100000, visualize=False, verbose=2) 63 64# 学習後のモデルの重みの出力 65dqn.save_weights("duel_dqn_{}_weights.h5f".format("Pendulum-v0"), overwrite=True) 66 67# 学習済モデルに対して、テストを実行 (必要に応じて適切なCallbackも定義、設定可能) 68dqn.test(env, nb_episodes=100, visualize=True)
試したこと
tensorflow 1.9.0,1.8.0に変更しましたが、decodeエラー?が発生しダメでした。
補足情報(FW/ツールのバージョンなど)
Keras 2.1.0
Keras-rl 0.4.0
tensorflow 2.0.0
pycharm
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/13 23:31