🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Keras-RL

Keras-RLは、Kerasを用いてDQNなどの深層強化学習アルゴリズムを実装したライブラリです。学習する強化学習の環境をOpenAI Gymのインターフェースに準じて作成することが必要です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1986閲覧

Keras-rlとKerasのバージョンの組み合わせについて

kimtakuya_

総合スコア22

Keras-RL

Keras-RLは、Kerasを用いてDQNなどの深層強化学習アルゴリズムを実装したライブラリです。学習する強化学習の環境をOpenAI Gymのインターフェースに準じて作成することが必要です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/12/14 07:49

編集2019/12/14 07:54

前提・実現したいこと

サンプルコード引用元を参考にしたのですが、
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

keras,keras-環境構築
こちらを参考にして
keras== 2.2.4
kerasrl== 0.4.2
tensorflow-gpu 1.14.0
としたところ動作確認が取れました
cuda9.0

投稿2019/12/14 08:00

編集2020/02/13 23:32
kimtakuya_

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kimtakuya_

2020/02/13 23:31

tensorflow-gpu==1.14.0です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問