前提・実現したいこと
chainerrlで強化学習をしようと思い、macで実行すると、以下のエラーが出てしまいました。分かる方よろしくお願いします。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "57_train_reinforce_gym.py", line 130, in <module> max_episode_len=timestep_limit) TypeError: train_agent_with_evaluation() got an unexpected keyword argument 'eval_n_runs'
該当のソースコード
Python3
1# Coding: utf-8 2# Chainer-RL 強化学習サンプル 3from __future__ import division 4from __future__ import print_function 5from __future__ import unicode_literals 6from __future__ import absolute_import 7from builtins import * # NOQA 8from future import standard_library 9standard_library.install_aliases() # NOQA 10import argparse 11import os 12 13import chainer 14import gym 15import gym.spaces 16import gym.wrappers 17import numpy as np 18 19import chainerrl 20from chainerrl import experiments 21from chainerrl import misc 22import logging 23 24parser = argparse.ArgumentParser() 25parser.add_argument('--env', type=str, default='CartPole-v0') 26parser.add_argument('--seed', type=int, default=0, 27 help='Random seed [0, 2 ** 32)') 28parser.add_argument('--gpu', type=int, default=-1) 29parser.add_argument('--outdir', type=str, default='results', 30 help='Directory path to save output files.' 31 ' If it does not exist, it will be created.') 32parser.add_argument('--beta', type=float, default=1e-4) 33parser.add_argument('--batchsize', type=int, default=10) 34parser.add_argument('--steps', type=int, default=10 ** 5) 35parser.add_argument('--eval-interval', type=int, default=10 ** 4) 36parser.add_argument('--eval-n-runs', type=int, default=100) 37parser.add_argument('--reward-scale-factor', type=float, default=1e-2) 38parser.add_argument('--render', action='store_true', default=True) 39parser.add_argument('--lr', type=float, default=1e-3) 40parser.add_argument('--demo', action='store_true', default=False) 41parser.add_argument('--load', type=str, default='') 42parser.add_argument('--logger-level', type=int, default=logging.INFO) 43parser.add_argument('--monitor', action='store_true') 44args = parser.parse_args() 45 46# 乱数シードを設定 47misc.set_random_seed(args.seed, gpus=(args.gpu,)) 48logging.basicConfig(level=args.logger_level) 49 50args.outdir = experiments.prepare_output_dir(args, args.outdir) 51 52def make_env(test): 53 env = gym.make(args.env) 54 # 訓練とテストで異なる乱数シードを使用する 55 env_seed = 2 ** 32 - 1 - args.seed if test else args.seed 56 env.seed(env_seed) 57 # 環境obsをFloat32にキャスト 58 env = chainerrl.wrappers.CastObservationToFloat32(env) 59 if args.monitor: 60 env = gym.wrappers.Monitor(env, args.outdir) 61 if not test: 62 # 学習の効率化のため報酬をスケール 63 env = chainerrl.wrappers.ScaleReward(env, args.reward_scale_factor) 64 if args.render and not test: 65 misc.env_modifiers.make_rendered(env) 66 return env 67 68train_env = make_env(test=False) 69timestep_limit = train_env.spec.tags.get( 70 'wrapper_config.TimeLimit.max_episode_steps') 71obs_space = train_env.observation_space 72action_space = train_env.action_space 73 74# ゲームの種類にあわせて方策(ポリシー)を変更 75if isinstance(action_space, gym.spaces.Box): 76 model = chainerrl.policies.FCGaussianPolicyWithFixedCovariance( 77 obs_space.low.size, 78 action_space.low.size, 79 var=0.1, 80 n_hidden_channels=200, 81 n_hidden_layers=2, 82 nonlinearity=chainer.functions.leaky_relu, 83 ) 84else: 85 model = chainerrl.policies.FCSoftmaxPolicy( 86 obs_space.low.size, 87 action_space.n, 88 n_hidden_channels=200, 89 n_hidden_layers=2, 90 nonlinearity=chainer.functions.leaky_relu, 91 ) 92 93# GPUを使う場合 94if args.gpu >= 0: 95 chainer.cuda.get_device(args.gpu).use() 96 model.to_gpu(args.gpu) 97 98# オプティマイザーの設定 99opt = chainer.optimizers.Adam(alpha=args.lr) 100opt.setup(model) 101opt.add_hook(chainer.optimizer.GradientClipping(1)) 102 103# エージェントの設定 104agent = chainerrl.agents.REINFORCE( 105 model, opt, beta=args.beta, batchsize=args.batchsize) 106if args.load: 107 agent.load(args.load) 108 109#環境のセットアップ 110eval_env = make_env(test=True) 111 112if args.demo: #デモモード 113 eval_stats = experiments.eval_performance( 114 env=eval_env, 115 agent=agent, 116 n_runs=args.eval_n_runs, 117 max_episode_len=timestep_limit) 118 print('n_runs: {} mean: {} median: {} stdev {}'.format( 119 args.eval_n_runs, eval_stats['mean'], eval_stats['median'], 120 eval_stats['stdev'])) 121else: #学習開始 122 experiments.train_agent_with_evaluation( 123 agent=agent, 124 env=train_env, 125 eval_env=eval_env, 126 outdir=args.outdir, 127 steps=args.steps, 128 eval_n_runs=args.eval_n_runs, 129 eval_interval=args.eval_interval, 130 max_episode_len=timestep_limit) 131
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
これはPython2のコードでgymのバージョンも昔のものなので、Python3のコードに直したいです。これを踏まえてどうすればいいか教えて下さい。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/29 08:40
2020/04/29 11:27 編集