
Theano - 計算圖
從以上兩個例子可以看出,在 Theano 中,我們建立一個表示式,最終使用 Theano 的函式進行求值。Theano 使用高階最佳化技術來最佳化表示式的執行。為了視覺化計算圖,Theano 在其庫中提供了一個列印包。
標量加法的符號圖
要檢視我們的標量加法程式的計算圖,請按如下方式使用列印庫:
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 文件中獲取的此類圖:

要理解 Theano 的工作原理,首先必須瞭解這些計算圖的重要性。有了這種理解,我們將瞭解 Theano 的重要性。
為什麼選擇 Theano?
透過檢視計算圖的複雜性,您現在將能夠理解開發 Theano 的目的。一個典型的編譯器會在程式中提供區域性最佳化,因為它從不將整個計算視為一個單元。
Theano 實現非常高階的最佳化技術來最佳化完整的計算圖。它結合了代數和最佳化編譯器的方面。圖的一部分可以編譯成 C 語言程式碼。對於重複計算,評估速度至關重要,而 Theano 透過生成非常高效的程式碼來滿足這一目的。
廣告