Theano - Graphique de calcul

À partir des deux exemples ci-dessus, vous avez peut-être remarqué que dans Theano, nous créons une expression qui est finalement évaluée à l'aide du Theano function. Theano utilise des techniques d'optimisation avancées pour optimiser l'exécution d'une expression. Pour visualiser le graphe de calcul, Theano fournit unprinting package dans sa bibliothèque.

Graphique symbolique pour l'addition scalaire

Pour voir le graphe de calcul de notre programme d'addition scalaire, utilisez la bibliothèque d'impression comme suit -

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

Lorsque vous exécutez cette instruction, un fichier appelé scalar_addition.pngsera créé sur votre machine. Le graphique de calcul enregistré est affiché ici pour votre référence rapide -

La liste complète des programmes pour générer l'image ci-dessus est donnée ci-dessous -

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)

Graphique symbolique pour multiplicateur matriciel

Maintenant, essayez de créer le graphe de calcul pour notre multiplicateur matriciel. La liste complète pour générer ce graphique est donnée ci-dessous -

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)

Le graphique généré est affiché ici -

Graphiques complexes

Dans les expressions plus grandes, les graphes de calcul peuvent être très complexes. Un tel graphe tiré de la documentation Theano est montré ici -

Pour comprendre le fonctionnement de Theano, il est important de connaître d'abord la signification de ces graphes de calcul. Avec cette compréhension, nous connaîtrons l'importance de Theano.

Pourquoi Theano?

En regardant la complexité des graphes de calcul, vous serez maintenant en mesure de comprendre le but du développement de Theano. Un compilateur typique fournirait des optimisations locales dans le programme car il ne considère jamais l'ensemble du calcul comme une seule unité.

Theano met en œuvre des techniques d'optimisation très avancées pour optimiser le graphe de calcul complet. Il combine les aspects de l'algèbre avec les aspects d'un compilateur d'optimisation. Une partie du graphique peut être compilée en code en langage C. Pour les calculs répétés, la vitesse d'évaluation est critique et Theano répond à cet objectif en générant un code très efficace.