memo: ChainerRLでCuPyのエラー


ChainerRLについてのメモです。

環境

sudo pip3 freezeで調べたもの。

  • chainer==6.1.0
  • chainerrl==0.7.0
  • cupy==6.1.0

概要

ChainerRLのTRPOでMountain Carを解くプログラム(参考コード; ほぼ同一)を実行したら、こんなエラーが出ました。

Traceback (most recent call last):
  File "mc_trpo.py", line 211, in <module>
    main()
  File "mc_trpo.py", line 158, in main
    policy.xp.zeros_like(obs_space.low, dtype=np.float32)[None],
  File "/usr/local/lib/python3.5/dist-packages/cupy/creation/basic.py", line 205, in zeros_like
    order, strides, memptr = _new_like_order_and_strides(a, dtype, order)
  File "/usr/local/lib/python3.5/dist-packages/cupy/creation/basic.py", line 35, in _new_like_order_and_strides
    order = chr(_update_order_char(a, ord(order)))
TypeError: Argument 'x' has incorrect type (expected cupy.core.core.ndarray, got numpy.ndarray)

変えたところといえば環境の引数くらい(自作MC環境)でして、あとはExampleまんまなんですけど……

解決策(暫定)

CuPyを5.4.0(適当)にダウングレード。

sudo pip3 install cupy==5.4.0

すると、バージョン不整合の警告は出るものの、動きました。うーん……?
動いたのでよしとします。なんかよい解決策を見つけたら追記します。