Ubuntu 14.04 LTS desktop amd64
Python 2.7.6
Deep Learningのネットを説明する時に描画をするのが面倒くさい。
コードで簡単に作れないだろうか。
yUML形式で試してみる。
参考 http://qiita.com/tukiyo3/items/840b52027be03d270b0a
v0.1: 1層だけ
print ":
print "[a]-->[" + elem + "],",
print ")"
python draw.py
の出力結果が以下。

上記のテキストをQiitaにそのまま貼ると以下となる。

10層とか作れるのだろうか。レンダリングが重くなるかもしれない。
v0.2: 2層だけ
print # for empty line
print ":
for inner in ('b','c','d','e'):
print "[" + outer + "]-->[" + inner + "],",
print ")"
print # for empty line


Fully connected networkのみ。
v0.3: 3層だけ
層を増やすのは面倒くさい。
print # for empty line
hidden1=('x','y','z')
hidden2=('a','b','c','d')
hidden3=('l','m','n','o')
print ""
print # for empty line


v0.4: N層
print # for empty line
hidden=[
('x','y','z'),
('a','b','c','d'),
('e','f','g','h'),
('i','j','k','l'),
('m','n','o','p')
]
print ":
for outer in hidden[idx]:
for inner in hidden[idx+1]:
print "[" + outer + "]-->[" + inner + "],",
print ")"
print # for empty line


v0.5: N層 + dropout
dropoutを破線で表す。
描画しないというのでも良い。
参考: http://qiita.com/HirofumiYashima/items/7fbf76e3f5dfdf3bc7a3
import numpy as np
from numpy.random import *
print # for empty line
hidden=[
('x','y','z'),
('a','b','c','d'),
('e','f','g','h'),
('i','j','k','l'),
('m','n','o','p')
]
print "
for idx in range(4):
for outer in hidden[idx]:
for inner in hidden[idx+1]:
val = rand()
if val > 0.5:
print "[" + outer + "]-->[" + inner + "],",
else:
print "[" + outer + "]-.->[" + inner + "],",
print ")"
print # for empty line

