こんにちは、えんせきです。
ちょっと寒いところにずっといたら体調を崩してしまいました。よわい。
熱は下がらないけど眠気が全く来ないので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.