Theano - wykres obliczeniowy

Z powyższych dwóch przykładów można było zauważyć, że w Theano tworzymy wyrażenie, które jest ostatecznie oceniane za pomocą Theano function. Theano wykorzystuje zaawansowane techniki optymalizacji, aby zoptymalizować wykonanie wyrażenia. Aby zwizualizować wykres obliczeniowy, Theano udostępnia plikprinting pakiet w swojej bibliotece.

Symboliczny wykres dodawania skalarnego

Aby zobaczyć wykres obliczeniowy dla naszego programu do dodawania skalarnego, użyj biblioteki drukowania w następujący sposób -

theano.printing.pydotprint(f, outfile="scalar_addition.png", var_with_name_simple=True)

Po wykonaniu tej instrukcji plik o nazwie scalar_addition.pngzostanie utworzony na twoim komputerze. Zapisany wykres obliczeniowy jest wyświetlany tutaj do szybkiego odniesienia -

Pełna lista programów do wygenerowania powyższego obrazu znajduje się poniżej -

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)

Symboliczny wykres dla mnożnika macierzy

Teraz spróbuj utworzyć wykres obliczeniowy dla naszego mnożnika macierzy. Pełna lista dotycząca generowania tego wykresu znajduje się poniżej -

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)

Wygenerowany wykres jest pokazany tutaj -

Złożone wykresy

W większych wyrażeniach wykresy obliczeniowe mogą być bardzo złożone. Oto jeden taki wykres zaczerpnięty z dokumentacji Theano -

Aby zrozumieć działanie Theano, ważne jest, aby najpierw poznać znaczenie tych wykresów obliczeniowych. Z tym zrozumieniem poznamy znaczenie Theano.

Dlaczego Theano?

Patrząc na złożoność wykresów obliczeniowych, będziesz teraz w stanie zrozumieć cel rozwoju Theano. Typowy kompilator zapewniłby lokalną optymalizację w programie, ponieważ nigdy nie traktuje całego obliczenia jako pojedynczej jednostki.

Theano wdraża bardzo zaawansowane techniki optymalizacji, aby zoptymalizować pełny wykres obliczeniowy. Łączy aspekty algebry z aspektami optymalizującego kompilatora. Część wykresu można skompilować do kodu języka C. W przypadku wielokrotnych obliczeń szybkość oceny jest krytyczna i Theano spełnia ten cel, generując bardzo wydajny kod.