こんにちは、長男が高熱をだし、時期が時期なので、インフルエンザを疑ったのですが、陰性で、その後もしばらく高熱がつづいたのですが、今では熱が下がり、大好きなYouTubeを見てます。@kjunichiです。
やったこと
タイトルの通りですが、以前このブログでも話題にしたmrubyかJuliaを呼び出せるmruby-juliaをWindowsのMSVC環境で動かせるようにして、 そこからJuliaからPythonを呼び出せるPyCallを経由して、すでにセットアップ済みのGPU対応のTensorflowを動かせました
mruby-juliaをwindows(MSVC)に対応することに成功したので、#mruby からGPUありの#tensorflow が動かせた! https://t.co/LCUGa1P9Ee pic.twitter.com/KrcAqh7VDB
— kjunichi (@kjunichi) 2017年1月27日
JuliaをMSVC環境で動かそうとして分かったこと
.libファイルが必要
JuliaのWindows版はMinGWでビルドされているので、MSVCで動かすには.libファイルを作る必要がりました。
MSVCではCではJuliaを組み込めない
さらに、CからJuliaを呼び出すことは出来ず、C++からでないと、ダメでした。 そのため、mruby-juliaは元々Cオンリーであったのを、JuliaのAPIを叩く箇所をC++化して対応しました。 (mrubyでC++を使ったmrbgemを使うとちょっと問題があるのですが、これは別の記事で書く予定)
mrubyからTensorflowを呼び出す
事前準備
Juliaであらかじめ環境変数PYTHONをGPUが有効なTensorflowが使えるPythonに設定した状態で、
Pkb.add("PyCall")
もしくは、
Pkb.build("PyCall")
しておく。
サンプルコード
j=Julia.new j.eval("using PyCall") j.eval("string(@pyimport tensorflow as tf)") j.eval('sess = tf.Session()') j.eval('a = tf.constant(10)') j.eval('b = tf.constant(32)') j.eval('sess[:run](pyeval("a + b", a=a, b=b))') p j.eval('string(sess[:run](pyeval("a + b", a=a, b=b)))')
成果物
関連記事
- mruby-juliaでPythonもmrubyから呼び出せるようになった - non vorrei lavorare
- Tensoflowのclassify_image.pyにElectronでGUIを被せてみた
- Raspberry Pi3でTensorflowをビルドして動かした
12年前の記事
11年前の記事
- vlcがインストールできない
- SETI@home について
- 最大表示解像度
- Starting tomcat5: /usr/bin/rebuild-jar-repository: error: could not find jta Java extension for this JVM