Теано - вычислительный граф
Из двух приведенных выше примеров вы могли заметить, что в 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, показан здесь -
Чтобы понять работу Theano, важно сначала узнать значение этих вычислительных графов. С таким пониманием мы узнаем важность Теано.
Почему Теано?
Посмотрев на сложность вычислительных графиков, вы теперь сможете понять цель разработки Theano. Типичный компилятор обеспечит локальную оптимизацию программы, поскольку он никогда не рассматривает все вычисления как единое целое.
Theano реализует очень продвинутые методы оптимизации для оптимизации всего вычислительного графа. Он сочетает в себе аспекты алгебры с аспектами оптимизирующего компилятора. Часть графа может быть скомпилирована в код языка C. Для повторяющихся вычислений скорость оценки имеет решающее значение, и Theano выполняет эту задачу, создавая очень эффективный код.