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.
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 :
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.