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 ?