計算グラフの可視化

私は、普段、信号処理の一つの手段としてDeep Learningアルゴリズムを利用している。 そこで、信号処理についても調査した内容について整理していこうと思う。

まずは、信号処理を考える上で大事となるシステムブロック図を考えていく。 ただ、これは趣味のブログであるため、すぐには本題には入らない。

システムブロック図

f:id:unachan_kz:20200531224610p:plain

まずブロック図をgraphvizを使いながら初めて行く。

graphviz

Graphvizはグラフを可視化するためのツールである。 「グラフ」とは計算グラムのようなノードと矢印によるデータ構造を意味する。 officialのサイトにサンプルがたくさん存在する。

graphvizのオフィシャルサイト

graphvizを使って可視化しようと思ったきっかけ

今回、ゼロから作るDeep Learning③を学びながらスキルアップをしたいと考えたため。

 

ゼロから作るDeep Learning ❸ ―フレームワーク編

ゼロから作るDeep Learning ❸ ―フレームワーク編

  • 作者:斎藤 康毅
  • 発売日: 2020/04/20
  • メディア: 単行本(ソフトカバー)

私はmacOSを利用しているためHomebrewを使用して、graphvizをインストールした。

$brew install graphviz

ノードを結ぶ図を作る。

ゼロから作るDeep Learning③のP.185のステップ25に従い、絵をシステムブロック図を描いてみる。

sample.dotファイルに下記のように記載する。

digraph finite_state_machine {
  1 [label="x", color=orange, style=filled];
  2 [label="system",color=lightblue, style=filled,shape=box];
  3 [label="y", color=orange, style=filled];
  1 -> 2 [ label = "入力" ];
  2 -> 3 [ label = "出力" ];
}

ターミナルから下記のコマンドを実行する。

dot sample.dot -T png -o sample.png 

下記のようなシステムブロック図を描くことができた。

f:id:unachan_kz:20200531230511p:plain

ノードを結ぶ図を横展開するようにする。

rankdir=LRを追加することでグラフを横向きに展開することができた。

digraph finite_state_machine {

  rankdir=LR;  

  1 [label="x", color=orange, style=filled];
  2 [label="system",color=lightblue, style=filled,shape=box];
  3 [label="y", color=orange, style=filled];
  1 -> 2 [ label = "入力" ];
  2 -> 3 [ label = "出力" ];
}

f:id:unachan_kz:20200531224610p:plain

参考文献