Theano - Gráfico Computacional

A partir dos dois exemplos acima, você deve ter notado que em Theano criamos uma expressão que eventualmente é avaliada usando o Theano function. Theano usa técnicas de otimização avançadas para otimizar a execução de uma expressão. Para visualizar o gráfico de computação, Theano fornece umprinting pacote em sua biblioteca.

Gráfico Simbólico para Adição Escalar

Para ver o gráfico de computação do nosso programa de adição escalar, use a biblioteca de impressão da seguinte forma -

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

Quando você executa esta instrução, um arquivo chamado scalar_addition.pngserá criado em sua máquina. O gráfico de computação salvo é exibido aqui para sua referência rápida -

A lista completa do programa para gerar a imagem acima é fornecida abaixo -

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

Agora, tente criar o gráfico de computação para nosso multiplicador de matriz. A lista completa para gerar este gráfico é fornecida abaixo -

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)

O gráfico gerado é mostrado aqui -

Gráficos Complexos

Em expressões maiores, os gráficos computacionais podem ser muito complexos. Um gráfico retirado da documentação Theano é mostrado aqui -

Para entender o funcionamento de Theano, é importante primeiro saber o significado desses gráficos computacionais. Com esse entendimento, saberemos a importância de Theano.

Por que Theano?

Olhando para a complexidade dos gráficos computacionais, você agora será capaz de entender o propósito por trás do desenvolvimento do Theano. Um compilador típico forneceria otimizações locais no programa, uma vez que nunca olha para o cálculo inteiro como uma única unidade.

Theano implementa técnicas de otimização muito avançadas para otimizar o gráfico computacional completo. Ele combina os aspectos da Álgebra com os aspectos de um compilador de otimização. Uma parte do gráfico pode ser compilada em código de linguagem C. Para cálculos repetidos, a velocidade de avaliação é crítica e Theano atende a esse propósito gerando um código muito eficiente.