Bibliothèques et cadres
Dans ce chapitre, nous allons relier l'apprentissage profond aux différentes bibliothèques et frameworks.
Apprentissage profond et Theano
Si nous voulons commencer à coder un réseau de neurones profond, il vaut mieux avoir une idée du fonctionnement de différents frameworks tels que Theano, TensorFlow, Keras, PyTorch, etc.
Theano est une bibliothèque python qui fournit un ensemble de fonctions pour créer des réseaux profonds qui s'entraînent rapidement sur notre machine.
Theano a été développé à l'Université de Montréal, Canada sous la direction de Yoshua Bengio, un pionnier du deep net.
Theano nous permet de définir et d'évaluer des expressions mathématiques avec des vecteurs et des matrices qui sont des tableaux rectangulaires de nombres.
Techniquement parlant, les réseaux neuronaux et les données d'entrée peuvent être représentés sous forme de matrices et toutes les opérations réseau standard peuvent être redéfinies en tant qu'opérations matricielles. Ceci est important car les ordinateurs peuvent effectuer des opérations matricielles très rapidement.
Nous pouvons traiter plusieurs valeurs de matrice en parallèle et si nous construisons un réseau neuronal avec cette structure sous-jacente, nous pouvons utiliser une seule machine avec un GPU pour former d'énormes réseaux dans une fenêtre de temps raisonnable.
Cependant, si nous utilisons Theano, nous devons construire le réseau profond à partir de zéro. La bibliothèque ne fournit pas de fonctionnalités complètes pour créer un type spécifique de réseau profond.
Au lieu de cela, nous devons coder tous les aspects du réseau profond comme le modèle, les couches, l'activation, la méthode d'entraînement et toutes les méthodes spéciales pour arrêter le surajustement.
La bonne nouvelle cependant est que Theano permet de construire notre implémentation sur un top de fonctions vectorisées nous offrant une solution hautement optimisée.
Il existe de nombreuses autres bibliothèques qui étendent les fonctionnalités de Theano. TensorFlow et Keras peuvent être utilisés avec Theano comme backend.
Apprentissage profond avec TensorFlow
Googles TensorFlow est une bibliothèque python. Cette bibliothèque est un excellent choix pour créer des applications d'apprentissage en profondeur de qualité commerciale.
TensorFlow est né d'une autre bibliothèque DistBelief V2 qui faisait partie de Google Brain Project. Cette bibliothèque vise à étendre la portabilité de l'apprentissage automatique afin que les modèles de recherche puissent être appliqués à des applications de niveau commercial.
Tout comme la bibliothèque Theano, TensorFlow est basé sur des graphes de calcul où un nœud représente des données persistantes ou une opération mathématique et les arêtes représentent le flux de données entre les nœuds, qui est un tableau ou un tenseur multidimensionnel; d'où le nom TensorFlow
La sortie d'une opération ou d'un ensemble d'opérations est introduite comme entrée dans la suivante.
Même si TensorFlow a été conçu pour les réseaux de neurones, il fonctionne bien pour d'autres réseaux où le calcul peut être modélisé sous forme de graphique de flux de données.
TensorFlow utilise également plusieurs fonctionnalités de Theano telles que l'élimination des expressions courantes et des sous-expressions, la différenciation automatique, les variables partagées et symboliques.
Différents types de réseaux profonds peuvent être construits à l'aide de TensorFlow, tels que les réseaux convolutifs, les auto-encodeurs, RNTN, RNN, RBM, DBM / MLP, etc.
Cependant, il n'y a pas de prise en charge de la configuration d'hyper paramètres dans TensorFlow.Pour cette fonctionnalité, nous pouvons utiliser Keras.
Deep Learning et Keras
Keras est une puissante bibliothèque Python facile à utiliser pour développer et évaluer des modèles d'apprentissage en profondeur.
Il a un design minimaliste qui nous permet de construire un filet couche par couche; entraînez-le et exécutez-le.
Il englobe les bibliothèques de calcul numérique efficaces Theano et TensorFlow et nous permet de définir et de former des modèles de réseaux neuronaux en quelques courtes lignes de code.
Il s'agit d'une API de réseau neuronal de haut niveau, aidant à utiliser largement l'apprentissage en profondeur et l'intelligence artificielle. Il s'exécute au-dessus d'un certain nombre de bibliothèques de niveau inférieur, notamment TensorFlow, Theano, etc. Le code Keras est portable; nous pouvons implémenter un réseau de neurones dans Keras en utilisant Theano ou TensorFlow comme back-end sans aucun changement de code.