わからん。やりたいことは多い。
- PyCon Kyusyuにプロポーザルだしたいので強化学習&Unityの勉強がしたい
- 仕事に活かしたいので緑本を完読したい
- 本業と副業を前倒しで進める
- プライベートのイベント
ほっといたら時間はすぎて色々間に合わなくなるので、それぞれ前倒しでやりたいがどうすりゃいいのか。
ダラダラするのは簡単だけど、やり遂げるって本当難しい。
はい。こんなこといわずにやりましょ。やります。とりあえず色々やります。
わからん。やりたいことは多い。
ほっといたら時間はすぎて色々間に合わなくなるので、それぞれ前倒しでやりたいがどうすりゃいいのか。
ダラダラするのは簡単だけど、やり遂げるって本当難しい。
はい。こんなこといわずにやりましょ。やります。とりあえず色々やります。
ml-agentsでチュートリアル通りに進めると、学習したモデルを使って動かそうとしたら動かなかった。
うまく学習出来ていないのかなと思いきや、よく見たらエラーが発生してた。
TFException: Op type not registered 'ClipByValue' in binary running on xxx.local. Make sure the Op and Kernel are registered in the binary running in this process.
根気よくググってたらissueに出会った。
@vasaka Which version of TensorFlow are you using? We currently only support 1.4 which may not include dilations.
なるほどなぁー
というわけで、tensorflowをダウングレードする.
$ pip uninstall tensorflow $ pip install tensorflow==1.4
再学習
$ python learn.py 3DBall.app --run-id=3DBall_2 --train
学習したモデルをUnityでアタッチして実行するとできた!!
やったぜ!
Numba使おうと試行錯誤していたが死んだのでCython使おうとした。
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.12.6
BuildVersion: 16G1212
$ python -V
Python 3.6.3 :: Anaconda, Inc.
$ pip install ctyhon
既存のものか、新規ファイルを用意.
def x(a, b): return a
既存のもの場合、型に注意したほうが良い。エラーになるので。
また、拡張子はpyx
にする。
参考になるものコピペして作成したほうが楽.
kazuki-nagasawa.hatenablog.com
import os from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext NAME = 'module_name' here = os.path.abspath(os.path.dirname(__file__)) ext_modules = [ Extension('{}.a'.format(NAME,), [os.path.join(here, NAME, 'a.pyx')]), ] setup( name='Sample a app', cmdclass={'build_ext' : build_ext}, ext_modules=ext_modules, )
ビルドした後に生成される.so
ファイルを配置先をモジュール以下にすることができる。
また、Extension(xxx, xxx.pyx)
とファイル名とpythonファイル名は同じにしたほうが良い。じゃないと踏んでしまう.
ビルド
$ python setup.py build_ext --inplace
module下に配置した場合は、from xxx.a import xxx
で呼べる.
$ python >>> from module_name.a import x >>> x(1, 2) 1