Theano : Description et utilisation de cette bibliothèque Python

-
3
 m de lecture
-

Theano est une bibliothèque qui permet de résoudre des problèmes incluant un grand nombre de données grâce à des tableaux multi-dimensionnels. Découvrez ci-dessous en plus de détails comment accélérer vos recherches en utilisant Theano: étymologie, création, spécificités et inclusion dans la pipeline Python …

Theano c’est avant tout le nom d’une mathématicienne et philosophe grecque du VIème siècle avant J.-C., dite la femme exemplaire de Pythagore.

Qu’est-ce que Theano ?

Pour en revenir à notre préoccupation principale, Theano, c’est une bibliothèque Python, développée par Yoshua Bengio à l’Université de Montréal en 2007, basée et écrite en Python. Elle utilise des tableaux multi-dimensionnels pour définir, optimiser et évaluer des expressions mathématiques surtout dans le cadre du Deep Learning ou de problèmes incluant une grande quantité de données. Elle est notamment très bien acceptée en recherche académique et développement.

Comment code-t-on avec Theano ?

  • On l’installe grâce à pip install Theano depuis le terminal.
  • La sous-bibliothèque « tensor » de Theano est souvent abrégé en T.
  • Une fonction et des variables Theano sont déclarées comme suit :

Comme vous pouvez le constater, la fonction Theano requiert un tableau de variables [a,b] et un résultat variable c prédéfini comme opération (ici addition) de a et b. Le résultat affiché lorsque la fonction est appelée est 10 dans ce cas là. On retrouve le graphe de la fonction ci-dessous, généré par une commande Theano dont on parlera au prochain paragraphe. On constate que les deux premiers blocs (en vert) correspondent aux deux variables a et b qui sont des tensor.dscalar() qui sont du type float. Le bloc du milieu (en rouge) correspond à la fonction Theano utilisée définie par c (add pour addition). Le bloc bleu correspond au résultat.

schema 1 theano
Graphe de la fonction Theano f

Quelles sont ses particularités ?

D’un point de vue des fonctionnalités et de la rapidité, cette bibliothèque:

  • Crée une expression qui est évaluée par une fonction Theano.
  • Permet de faire des différentielles de plusieurs variables, des calculs matriciels, et des calculs de gradient facilement.
  • Crée automatiquement des graphes symboliques que l’on peut afficher grâce à une bibliothèque et une fonction d’impression pydotprint. Ces graphes peuvent être très complexes et Theano y applique de nombreuses techniques d’optimisation très avancées (algèbre et compilation). Ces techniques prennent en compte le graphe global pour générer un code très efficace, notamment dans le cadre de répétitions de calculs et non uniquement des techniques d’optimisation locales, par exemple lorsqu’on entraîne des réseaux de neurones. Elle peut, par exemple, réorganiser les différents calculs (ordre, répétitions) pour faire en sorte que le calcul prenne moins de temps (à l’instar de différents algorithmes de recherche d’un mot dans un texte qui sont plus ou moins rapides – O(n), O(n² )). La fonction Theano fonctionne comme une amorce pour injecter le code compilé en C dans le runtime (le logiciel responsable de l’exécution du programme).

On peut voir ci-dessous, un exemple de graphe plus complexe que le précédent. Ici, il y a un élément supplémentaire, les blocs blancs qui sont des fonctions prédéfinies d’autres bibliothèques par exemple :

Graphe Complexe de fonction Theano

Les calculs sont jusqu’à 140 fois plus rapides sur GPU que C sur un CPU (qui supporte le format float32 seulement) ou du pur Python. La génération dynamique de code en C permet d’évaluer plus rapidement les expressions.

Petit plus :

  • Elle est rapide et stable face à des calculs du type log(1+exp(x)) pour les grandes valeurs de x
  • Elle inclut des outils d’auto-test pour diagnostiquer bugs et problèmes
  • Elle peut être adaptée à des réseaux convolutifs et des réseaux récurrents

Comment est-elle liée aux autres bibliothèques ?

  • Theano intègre les numpy.arrays dans son fonctionnement interne
  • C’est une bibliothèque parfois appelée dans le fonctionnement interne de Keras avec Tensorflow (pour des modèles de ML). C’est une bibliothèque qui peut faire office de backend dans Keras pour faire toutes les opérations internes. On retrouvera aussi la librairie Tensorflow qui fait sensiblement la même chose.

Conclusion

Theano est donc un outil qui permet d’optimiser et d’accélérer vos calculs en Deep Learning ou en Machine Learning sur la base d’un système de graphes englobant toutes les étapes de computation. Malgré son âge, elle n’est pas désuète et mérite une place au Palmarès des bibliothèques d’optimisation. Si vous voulez vous former à ces disciplines expertes, DataScientest a pensé un cursus pour la Deep Learning qui vous pourrez retrouver en cliquant sur le lien précédent.

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?