質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

2697閲覧

chainerrlをmacで実行するとエラーが出てしまう。

nary002

総合スコア5

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2020/04/18 08:02

編集2020/04/20 10:25

前提・実現したいこと

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のコードに直したいです。これを踏まえてどうすればいいか教えて下さい。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Mac以外では動作したのでしょうか?
train_agent_with_evaluation関数に、eval_n_runs引数は無いようですが・・・。

chainerrl.experiments

投稿2020/04/18 13:07

編集2020/04/18 13:10
hasami

総合スコア1277

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

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

nary002

2020/04/29 08:40

返信がおくれましてすみません。eval_n_runs引数があるgymのバージョンを教えていただきたいです。
hasami

2020/04/29 11:27 編集

ちなみに、max_episode_lenもありません。 train_max_episode_lenとeval_max_episode_lenはあります。 この関数を使用するのであれば、プログラムの仕様と実装を関数に合わせた方が現実的だと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問