【dqn_agent】DDQNAgentの使い方【Tensorflow&Keras】

猫とパソコン

Tensorflowを用いてDDQNプログラムを作成する際のagent設定方法について解説します。

Tensorflow&Kerasを用いて、DQNでCartpoleを制御するプログラムを作成した際に、これをDDQNに応用できないかと思い、やり方を調べました。

また、私たちのホームページではさまざまなエラーへの対処法について紹介しています。

dqnagentの問題点

Tensorflow&KerasでのDQNでは以下のようにAgentを定義します。

agent = dqn_agent.DqnAgent(
    train_env.time_step_spec(), 
    train_env.action_spec(), 
    q_network=q_net, optimizer=optimizer, 
    td_errors_loss_fn=common.element_wise_squared_loss, 
    train_step_counter=train_step_counter)

ウェブ上で、これをDDQNに対応させるには、引数として

enable_double_dqn = True

とすれば良い、という記載や、単純にddqn=Trueとする、などの記載がありますが、どちらもうまくいきませんでした。

おそらく、バージョンアップなどで引数の設定が変わってしまったのだと考えられます。

agentの解決策

使用する関数を

agent = dqn_agent.DdqnAgent(
    train_env.time_step_spec(), 
    train_env.action_spec(), 
    q_network=q_net, optimizer=optimizer, 
    td_errors_loss_fn=common.element_wise_squared_loss, 
    train_step_counter=train_step_counter)

にするとうまくいきます。DQNとの違いは、dqn_agent.DdqnAgent()にするだけです。

引数についてはDQNのものをそのまま引き継ぐことができます。

詳細はTensorflowのサイトにありますので、気になる方はご覧ください。

関連記事

コメントを残す

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