Theano-計算グラフ

上記の2つの例から、Theanoで式を作成し、最終的にTheanoを使用して評価されることに気付いたかもしれません。 function。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?

計算グラフの複雑さを見ると、Theanoの開発の背後にある目的を理解できるようになります。一般的なコンパイラは、計算全体を単一のユニットと見なすことはないため、プログラムでローカル最適化を提供します。

Theanoは、完全な計算グラフを最適化するために非常に高度な最適化手法を実装しています。これは、代数の側面と最適化コンパイラの側面を組み合わせたものです。グラフの一部はC言語コードにコンパイルされる場合があります。繰り返し計算する場合、評価速度は重要であり、Theanoは非常に効率的なコードを生成することでこの目的を満たします。