のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

Theano 関数でグラフを書くための準備(Failed to import pydotなんていわれたくない)

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気です。

さて、本日はTheanoで関数のGraphを書きましょう。
Printing/Drawing Theano graphs — Theano 0.6 documentation

因みに必要なライブラリがないとサンプルコードは動きません。それらから解決していきましょう。

Graphを動かすために

サンプルコードが動かない!?

サンプルコードを動かそうとすると以下のエラーが発生します。

Traceback (most recent call last):
  File "graph.py", line 72, in <module>
    var_with_name_simple=True)
  File "/Library/Python/2.7/site-packages/theano/printing.py", line 570, in pydotprint
    raise RuntimeError("Failed to import pydot. You must install pydot"
RuntimeError: Failed to import pydot. You must install pydot for `pydotprint` to work.

まぁ中でpydotと呼ばれるライブラリを呼んでいるらしいのですが、それがないといっております。

実はこれ、pydotをインストールしても解決できません。

Github上にこの問題はissueとしてあがっています。
RuntimeError: Failed to import pydot. · Issue #1801 · Theano/Theano · GitHub

内容は、pydotの一部の機能にgraphvizと呼ばれるPythonのライブラリが必要です。
しかし、graphvizには大元のソフトがあるそうなので、そちらも必要ですとのこと

インストールコマンド

brew install gts
brew install graphviz
sudo pip install pydot
sudo pip install graphviz

これらを動かすとサンプルコードが希望通り動きます。

簡単なプログラムでの動作

import theano
import theano.tensor as T

import os

#function1
x = T.lscalar("x")
y = x*2
f = theano.function([x],y)

if not os.path.exists('pics'):
    os.mkdir('pics')

theano.printing.pydotprint(f,
                           outfile="pics/function.png",
                           var_with_name_simple=True)

f:id:tereka:20140618195826p:plain

x と y を掛けるだけの簡単なお仕事です。
Elemwiseにmulと掛けるような内容が掲載されています。

細かいことは次回解説いたします。