こんにちは、えんせきです。
ちょっと寒いところにずっといたら体調を崩してしまいました。よわい。
熱は下がらないけど眠気が全く来ないのでWindowsの環境を整えていました。
つまりなにしたの?
この週末で別の環境(Windows)にml-agentsを入れようと思ったらエラーが出たのでとりあえず対処した。
追記: 2018年1月25日
すごい人がなおしたっぽい。
github.com
なにしようとしてたの?
家の据え置きマシンの上でPPO動かしていろいろ学習していこうと思って今日の夕方にGithubからMasterをクローンして動かしたら
ValueError: List argument 'values' to 'ConcatV2' Op with length 0 shorter than minimum length 2.
ってエラーが出て困った。
どうすればなおるの?
2018年1月19日にコミットされた
github.com
の中でbrainにオブザベーション数のパラメータが入ったことが想定されたようなコードになっている。
マルチオブザベーションに対応するコードがマージされたらしいんだけど、デフォルトのPPO.ipynbと環境の組み合わせだとBrain側のパラメータが足りていない感じになっていて、さっきのエラーにつながる。
そこで、とりあえず一つ前のコミットに戻す。
ログを確認。
$ git log # これが今の最新 commit a1d35bfa3735ca9d5feb280f475ac5c6b389d72b Author: Alfredo Solano Date: Fri Jan 19 10:01:41 2018 +0900 Initial support for multiple observations (#256) * Initial support for multiple observations * Fix PPO for continuous control #←まんま書いてあってFixはまだされていないっぽい。 # 動いてた頃のコミット commit 921bb15849b4a6b3880947ceaae49fea04c0533e Author: 60days Date: Tue Jan 16 11:23:11 2018 +1100 Tiny TensorFlowSharp docs tweak (#252) Namespace capitalization change for people copy/pasting - otherwise namespace is not found
動いてた頃のコミットでブランチ切る。
$ git checkout -b my_stable 921bb15849b4a6b3880947ceaae49fea04c0533e $ git branch master * my_stable
そしたら動くようになった。(あたりまえ)
続報対応できるかわからないけど、とりあえず週末はいる前に解決できてよかった。
PPO.ipynbで発生していたエラー全文
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-6-fea09393b070> in <module>() 20 h_size=hidden_units, epsilon=epsilon, 21 beta=beta, max_step=max_steps, ---> 22 normalize=normalize, num_layers=num_layers) 23 24 is_continuous = (env.brains[brain_name].action_space_type == "continuous") C:\dev\ml-agents\python\ppo\models.py in create_agent_model(env, lr, h_size, epsilon, beta, max_step, normalize, num_layers) 23 brain = env.brains[brain_name] 24 if brain.action_space_type == "continuous": ---> 25 return ContinuousControlModel(lr, brain, h_size, epsilon, max_step, normalize, num_layers) 26 if brain.action_space_type == "discrete": 27 return DiscreteControlModel(lr, brain, h_size, epsilon, beta, max_step, normalize, num_layers) C:\dev\ml-agents\python\ppo\models.py in __init__(self, lr, brain, h_size, epsilon, max_step, normalize, num_layers) 220 bw = brain.camera_resolutions[i]['blackAndWhite'] 221 encoders.append(self.create_visual_encoder(height_size, width_size, bw, h_size, 2, tf.nn.tanh, num_layers)) --> 222 hidden_visual = tf.concat(encoders, axis=2) 223 if brain.state_space_size > 0: 224 s_size = brain.state_space_size c:\anaconda3\envs\mla\lib\site-packages\tensorflow\python\ops\array_ops.py in concat(values, axis, name) 1097 tensor_shape.scalar()) 1098 return identity(values[0], name=scope) -> 1099 return gen_array_ops._concat_v2(values=values, axis=axis, name=name) 1100 1101 c:\anaconda3\envs\mla\lib\site-packages\tensorflow\python\ops\gen_array_ops.py in _concat_v2(values, axis, name) 703 if _ctx.in_graph_mode(): 704 _, _, _op = _op_def_lib._apply_op_helper( --> 705 "ConcatV2", values=values, axis=axis, name=name) 706 _result = _op.outputs[:] 707 _inputs_flat = _op.inputs c:\anaconda3\envs\mla\lib\site-packages\tensorflow\python\framework\op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords) 568 "List argument '%s' to '%s' Op with length %d shorter " 569 "than minimum length %d." % --> 570 (input_name, op_type_name, len(values), num_attr.minimum)) 571 # All tensors must have the same base type. 572 if any([bt != base_types[0] for bt in base_types]): ValueError: List argument 'values' to 'ConcatV2' Op with length 0 shorter than minimum length 2.