ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

やりたいことの絞り方

わからん。やりたいことは多い。

  • PyCon Kyusyuにプロポーザルだしたいので強化学習&Unityの勉強がしたい
  • 仕事に活かしたいので緑本を完読したい
  • 本業と副業を前倒しで進める
  • プライベートのイベント

ほっといたら時間はすぎて色々間に合わなくなるので、それぞれ前倒しでやりたいがどうすりゃいいのか。

ダラダラするのは簡単だけど、やり遂げるって本当難しい。

はい。こんなこといわずにやりましょ。やります。とりあえず色々やります。

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.

ml-agentsでチュートリアル通りに進めると、学習したモデルを使って動かそうとしたら動かなかった。

うまく学習出来ていないのかなと思いきや、よく見たらエラーが発生してた。

www.aipacommander.com

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に出会った。

github.com

@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でアタッチして実行するとできた!!

f:id:aipacommander:20180503200738g:plain

やったぜ!

Cython使ってみた

Numba使おうと試行錯誤していたが死んだのでCython使おうとした。

環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.12.6
BuildVersion:   16G1212

$ python -V
Python 3.6.3 :: Anaconda, Inc.

Cythonのインストール

$ pip install ctyhon

Cythonにしたいファイルを用意

既存のものか、新規ファイルを用意.

  • module_name/a.pyx
def x(a, b):
    return a

既存のもの場合、型に注意したほうが良い。エラーになるので。

また、拡張子はpyxにする。

setup.pyを書く

参考になるものコピペして作成したほうが楽.

github.com

kazuki-nagasawa.hatenablog.com

  • setup.py
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ファイル名は同じにしたほうが良い。じゃないと踏んでしまう.

stackoverflow.com

build

ビルド

$ python setup.py build_ext --inplace

確認する

module下に配置した場合は、from xxx.a import xxxで呼べる.

$ python
>>> from module_name.a import x
>>> x(1, 2)
1

GW、なにしようか。

明日出勤したらまた休みです。GWですね。

諸事情有り、今年は遊びにいくことはないので、家で引きこもって仕事するか勉強するか家族サービスするかって感じです。

Unityで強化学習したいなー。自動運転やってみたい。どうやって作ればいいのかな。Unityで車ってどうやって作るんだ。

あと緑本も読みたい。いい加減読み終わりたい。

去年も強化学習しようと頑張ったけど、去年はマリオカートを強化学習しようと難易度高いなぞの試みをしたので、今年はもっとハードル低くやる。

やるぞー