Theano - Gráfico computacional
De los dos ejemplos anteriores, es posible que haya notado que en Theano creamos una expresión que finalmente se evalúa utilizando el Theano function. Theano utiliza técnicas de optimización avanzadas para optimizar la ejecución de una expresión. Para visualizar el gráfico de cálculo, Theano proporciona unprinting paquete en su biblioteca.
Gráfico simbólico para la suma escalar
Para ver el gráfico de cálculo de nuestro programa de suma escalar, use la biblioteca de impresión de la siguiente manera:
theano.printing.pydotprint(f, outfile="scalar_addition.png", var_with_name_simple=True)
Cuando ejecuta esta declaración, un archivo llamado scalar_addition.pngse creará en su máquina. El gráfico de cálculo guardado se muestra aquí para su referencia rápida:
La lista completa de programas para generar la imagen anterior se muestra a continuación:
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)
Gráfico simbólico para multiplicador de matriz
Ahora, intente crear el gráfico de cálculo para nuestro multiplicador de matriz. La lista completa para generar este gráfico se da a continuación:
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)
El gráfico generado se muestra aquí:
Gráficos complejos
En expresiones más grandes, los gráficos computacionales pueden ser muy complejos. Aquí se muestra uno de esos gráficos tomados de la documentación de Theano:
Para comprender el funcionamiento de Theano, es importante conocer primero el significado de estos gráficos computacionales. Con este entendimiento, conoceremos la importancia de Theano.
¿Por qué Theano?
Al observar la complejidad de los gráficos computacionales, ahora podrá comprender el propósito detrás del desarrollo de Theano. Un compilador típico proporcionaría optimizaciones locales en el programa, ya que nunca considera el cálculo completo como una sola unidad.
Theano implementa técnicas de optimización muy avanzadas para optimizar el gráfico computacional completo. Combina los aspectos de Álgebra con aspectos de un compilador optimizador. Una parte del gráfico se puede compilar en código en lenguaje C. Para cálculos repetidos, la velocidad de evaluación es crítica y Theano cumple este propósito generando un código muy eficiente.