Theano-computational-graph
Theano-計算グラフ
上記の2つの例から、Theanoでは式が作成され、最終的にTheano 関数*を使用して評価されることに気づいたかもしれません。 Theanoは、高度な最適化手法を使用して、式の実行を最適化します。 計算グラフを視覚化するために、Theanoはライブラリに *printing パッケージを提供しています。
スカラー加算のシンボリックグラフ
私たちのスカラー加算プログラムの計算グラフを表示するには、次のように印刷ライブラリを使用します-
theano.printing.pydotprint(f, outfile="scalar_addition.png", var_with_name_simple=True)
このステートメントを実行すると、 scalar_addition.png というファイルがマシン上に作成されます。 保存された計算グラフは、クイックリファレンス用にここに表示されます-
上記の画像を生成するための完全なプログラムのリストは以下のとおりです-
from theano import *
a = tensor.dscalar()
b = tensor.dscalar()
c = a + b
f = theano.function([a,b], c)
theano.printing.pydotprint(f, outfile="scalar_addition.png", var_with_name_simple=True)
行列乗数のシンボリックグラフ
ここで、マトリックス乗数の計算グラフを作成してみてください。 このグラフを生成するための完全なリストは以下のとおりです-
from theano import *
a = tensor.dmatrix()
b = tensor.dmatrix()
c = tensor.dot(a,b)
f = theano.function([a,b], c)
theano.printing.pydotprint(f, outfile="matrix_dot_product.png", var_with_name_simple=True)
生成されたグラフはここに示されています-
複雑なグラフ
大きな表現では、計算グラフは非常に複雑になる可能性があります。 Theanoドキュメントから取られたそのようなグラフの1つはここに示されています-
Theanoの動作を理解するには、これらの計算グラフの重要性を最初に知ることが重要です。 この理解により、テアノの重要性を知ることになります。
なぜテアノ?
計算グラフの複雑さを見ると、Theanoの開発の背後にある目的を理解できるようになります。 典型的なコンパイラは、計算全体を単一のユニットと見なさないため、プログラムでローカルな最適化を提供します。
Theanoは、完全な計算グラフを最適化するための非常に高度な最適化手法を実装しています。 代数の側面と最適化コンパイラの側面を組み合わせています。 グラフの一部は、C言語コードにコンパイルできます。 計算を繰り返す場合、評価速度が重要であり、Theanoは非常に効率的なコードを生成することでこの目的を達成します。