Commençons ce didacticiel avec l'introduction de TensorFlow:
Qu'est-ce que TensorFlow?
TensorFlow est une plate-forme open source de bout en bout pour la création d'applications d'apprentissage automatique. Il s'agit d'une bibliothèque mathématique symbolique qui utilise un flux de données et une programmation différenciable pour effectuer diverses tâches axées sur l'apprentissage et l'inférence de réseaux de neurones profonds. Il permet aux développeurs de créer des applications d'apprentissage automatique à l'aide de divers outils, bibliothèques et ressources communautaires.
Actuellement, la bibliothèque d'apprentissage en profondeur la plus connue au monde est TensorFlow de Google. Le produit Google utilise l'apprentissage automatique dans tous ses produits pour améliorer le moteur de recherche, la traduction, le sous-titrage des images ou les recommandations.
Pour donner un exemple concret, les utilisateurs de Google peuvent expérimenter une recherche plus rapide et plus raffinée avec l'IA. Si l'utilisateur tape un mot-clé dans la barre de recherche, Google fournit une recommandation sur ce que pourrait être le mot suivant.
Google souhaite utiliser l'apprentissage automatique pour tirer parti de ses énormes ensembles de données afin d'offrir aux utilisateurs la meilleure expérience possible. Trois groupes différents utilisent l'apprentissage automatique:
- Des chercheurs
- Scientifiques des données
- Les programmeurs.
Ils peuvent tous utiliser le même ensemble d'outils pour collaborer les uns avec les autres et améliorer leur efficacité.
Google n'a pas que des données; ils ont l'ordinateur le plus massif du monde, donc Tensor Flow a été conçu pour évoluer. TensorFlow est une bibliothèque développée par l'équipe Google Brain pour accélérer l'apprentissage automatique et la recherche sur les réseaux de neurones profonds.
Il a été conçu pour fonctionner sur plusieurs processeurs ou GPU et même des systèmes d'exploitation mobiles, et il dispose de plusieurs wrappers dans plusieurs langages comme Python, C ++ ou Java.
Dans ce didacticiel TensorFlow, vous apprendrez
- Qu'est-ce que TensorFlow?
- Histoire de TensorFlow
- Fonctionnement de TensorFlow
- Architecture TensorFlow
- Où Tensorflow peut-il fonctionner?
- Introduction aux composants de TensorFlow
- Pourquoi TensorFlow est-il populaire?
- Liste des algorithmes importants pris en charge par TensorFlow
- Exemple TensorFlow simple
- Options de chargement des données dans TensorFlow
- Créer un pipeline Tensorflow
Histoire de TensorFlow
Il y a quelques années, l'apprentissage en profondeur a commencé à surpasser tous les autres algorithmes d'apprentissage automatique en fournissant une quantité massive de données. Google a vu qu'il pouvait utiliser ces réseaux de neurones profonds pour améliorer ses services:
- Gmail
- photo
- Moteur de recherche Google
Ils créent un cadre appelé Tensorflow pour permettre aux chercheurs et aux développeurs de travailler ensemble sur un modèle d'IA. Une fois développé et mis à l'échelle, il permet à de nombreuses personnes de l'utiliser.
Il a été rendu public pour la première fois fin 2015, tandis que la première version stable est apparue en 2017. Il est open source sous licence Apache Open Source. Vous pouvez l'utiliser, le modifier et redistribuer la version modifiée moyennant des frais sans rien payer à Google.
Ensuite, dans ce didacticiel d'apprentissage en profondeur TensorFlow, nous en apprendrons davantage sur l'architecture TensorFlow et sur le fonctionnement de TensorFlow.
Fonctionnement de TensorFlow
TensorFlow vous permet de créer des graphiques et des structures de flux de données pour définir la façon dont les données se déplacent dans un graphique en prenant les entrées sous la forme d'un tableau multidimensionnel appelé Tensor. Il vous permet de construire un organigramme des opérations qui peuvent être effectuées sur ces entrées, qui va à une extrémité et vient à l'autre extrémité en tant que sortie.
Architecture TensorFlow
L'architecture Tensorflow fonctionne en trois parties:
- Prétraitement des données
- Construisez le modèle
- Former et estimer le modèle
Il est appelé Tensorflow car il prend une entrée sous la forme d'un tableau multidimensionnel, également appelé tenseurs . Vous pouvez créer une sorte d' organigramme des opérations (appelé graphique) que vous souhaitez effectuer sur cette entrée. L'entrée entre à une extrémité, puis elle traverse ce système d'opérations multiples et sort de l'autre extrémité en tant que sortie.
C'est pourquoi il s'appelle TensorFlow parce que le tenseur y entre, traverse une liste d'opérations, puis sort de l'autre côté.
Où Tensorflow peut-il fonctionner?
Les exigences matérielles et logicielles de TensorFlow peuvent être classées en
Phase de développement: c'est à ce moment que vous entraînez le mode. La formation se fait généralement sur votre ordinateur de bureau ou portable.
Phase d'exécution ou phase d'inférence: une fois l'entraînement terminé, Tensorflow peut être exécuté sur de nombreuses plates-formes différentes. Vous pouvez l'exécuter sur
- Bureau exécutant Windows, macOS ou Linux
- Cloud en tant que service Web
- Appareils mobiles comme iOS et Android
Vous pouvez l'entraîner sur plusieurs machines, puis l'exécuter sur une autre machine, une fois que vous avez le modèle entraîné.
Le modèle peut être formé et utilisé sur des GPU ainsi que des CPU. Les GPU ont été initialement conçus pour les jeux vidéo. À la fin de 2010, des chercheurs de Stanford ont découvert que le GPU était également très bon pour les opérations matricielles et l'algèbre, ce qui les rend très rapides pour faire ce genre de calculs. L'apprentissage en profondeur repose sur une multiplication matricielle importante. TensorFlow est très rapide dans le calcul de la multiplication matricielle car il est écrit en C ++. Bien qu'il soit implémenté en C ++, TensorFlow est accessible et contrôlé par d'autres langages principalement, Python.
Enfin, une caractéristique importante de TensorFlow est le TensorBoard. Le TensorBoard permet de surveiller graphiquement et visuellement ce que fait TensorFlow.
Introduction aux composants de TensorFlow
Tenseur
Le nom de Tensorflow est directement dérivé de son framework de base: Tensor . Dans Tensorflow, tous les calculs impliquent des tenseurs. Un tenseur est un vecteur ou une matrice de n dimensions qui représente tous les types de données. Toutes les valeurs dans un tenseur tiennent type de données identique à une connu (ou partiellement connue) forme . La forme des données est la dimensionnalité de la matrice ou du tableau.
Un tenseur peut provenir des données d'entrée ou du résultat d'un calcul. Dans TensorFlow, toutes les opérations sont effectuées à l'intérieur d'un graphique . Le graphe est un ensemble de calculs qui se déroule successivement. Chaque opération est appelée un nœud op et sont connectées les unes aux autres.
Le graphique décrit les opérations et les connexions entre les nœuds. Cependant, il n'affiche pas les valeurs. Le bord des nœuds est le tenseur, c'est-à-dire un moyen de peupler l'opération avec des données.
Graphiques
TensorFlow utilise un framework de graphes. Le graphe rassemble et décrit tous les calculs de séries effectués lors de la formation. Le graphique présente de nombreux avantages:
- Il a été fait pour fonctionner sur plusieurs processeurs ou GPU et même sur un système d'exploitation mobile
- La portabilité du graphe permet de conserver les calculs pour une utilisation immédiate ou ultérieure. Le graphique peut être enregistré pour être exécuté ultérieurement.
- Tous les calculs du graphe se font en reliant des tenseurs entre eux
- Un tenseur a un nœud et une arête. Le nœud porte l'opération mathématique et produit des sorties d'extrémité. Les arêtes les arêtes expliquent les relations d'entrée / sortie entre les nœuds.
Pourquoi TensorFlow est-il populaire?
TensorFlow est la meilleure bibliothèque de toutes car elle est conçue pour être accessible à tous. La bibliothèque Tensorflow intègre différentes API pour créer une architecture d'apprentissage en profondeur à grande échelle telle que CNN ou RNN. TensorFlow est basé sur le calcul de graphes; il permet au développeur de visualiser la construction du réseau neuronal avec Tensorboad. Cet outil est utile pour déboguer le programme. Enfin, Tensorflow est conçu pour être déployé à grande échelle. Il fonctionne sur CPU et GPU.
Tensorflow attire la plus grande popularité sur GitHub par rapport à l'autre framework d'apprentissage profond.
Liste des algorithmes importants pris en charge par TensorFlow
Vous trouverez ci-dessous la liste des algorithmes TensorFlow pris en charge:
Actuellement, TensorFlow 1.10 dispose d'une API intégrée pour:
- Régression linéaire: tf.estimator.LinearRegressor
- Classification: tf.estimator.LinearClassifier
- Classification du Deep Learning: tf.estimator.DNNClassifier
- Apprentissage profond et approfondi: tf.estimator.DNNLinearCombinedClassifier
- Régression d'arbre Booster: tf.estimator.BoostedTreesRegressor
- Classification des arbres améliorée: tf.estimator.BoostedTreesClassifier
Exemple TensorFlow simple
import numpy as npimport tensorflow as tf
Dans les deux premières lignes de code, nous avons importé tensorflow en tant que tf. Avec Python, il est courant d'utiliser un nom court pour une bibliothèque. L'avantage est d'éviter de taper le nom complet de la bibliothèque lorsque nous devons l'utiliser. Par exemple, nous pouvons importer tensorflow en tant que tf, et appeler tf lorsque nous voulons utiliser une fonction tensorflow
Pratiquons le workflow élémentaire de Tensorflow avec des exemples simples de TensorFlow. Créons un graphe de calcul qui multiplie deux nombres ensemble.
Au cours de l'exemple, nous multiplierons X_1 et X_2 ensemble. Tensorflow créera un nœud pour connecter l'opération. Dans notre exemple, cela s'appelle multiplier. Lorsque le graphe est déterminé, les moteurs de calcul Tensorflow multiplient ensemble X_1 et X_2.
Exemple TensorFlow
Enfin, nous lancerons une session TensorFlow qui exécutera le graphe de calcul avec les valeurs de X_1 et X_2 et afficherons le résultat de la multiplication.
Définissons les nœuds d 'entrée X_1 et X_2. Lorsque nous créons un nœud dans Tensorflow, nous devons choisir le type de nœud à créer. Les nœuds X1 et X2 seront un nœud d'espace réservé. L'espace réservé attribue une nouvelle valeur à chaque fois que nous effectuons un calcul. Nous les créerons en tant que nœud d'espace réservé TF dot.
Étape 1: définir la variable
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
Lorsque nous créons un nœud d'espace réservé, nous devons transmettre le type de données qui ajoutera des nombres ici afin que nous puissions utiliser un type de données à virgule flottante, utilisons tf.float32. Nous devons également donner un nom à ce nœud. Ce nom apparaîtra lorsque nous examinerons les visualisations graphiques de notre modèle. Nommons ce nœud X_1 en passant un paramètre appelé nom avec une valeur de X_1 et définissons maintenant X_2 de la même manière. X_2.
Étape 2: définir le calcul
multiply = tf.multiply(X_1, X_2, name = "multiply")
Nous pouvons maintenant définir le nœud qui effectue l'opération de multiplication. Dans Tensorflow, nous pouvons le faire en créant un nœud tf.multiply.
Nous passerons les nœuds X_1 et X_2 au nœud de multiplication. Il dit à tensorflow de lier ces nœuds dans le graphe de calcul, nous lui demandons donc de tirer les valeurs de x et y et de multiplier le résultat. Donnons également au nœud de multiplication le nom multiplier. C'est la définition complète de notre graphe de calcul simple.
Étape 3: Exécutez l'opération
Pour exécuter des opérations dans le graphe, nous devons créer une session. Dans Tensorflow, cela se fait par tf.Session (). Maintenant que nous avons une session, nous pouvons demander à la session d'exécuter des opérations sur notre graphe de calcul en appelant session. Pour exécuter le calcul, nous devons utiliser run.
Lorsque l'opération d'ajout s'exécute, il va voir qu'il doit saisir les valeurs des nœuds X_1 et X_2, nous devons donc également fournir des valeurs pour X_1 et X_2. Nous pouvons le faire en fournissant un paramètre appelé feed_dict. Nous passons la valeur 1,2,3 pour X_1 et 4,5,6 pour X_2.
Nous imprimons les résultats avec print (result). On devrait voir 4, 10 et 18 pour 1x4, 2x5 et 3x6
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")multiply = tf.multiply(X_1, X_2, name = "multiply")with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
[ 4. 10. 18.]
Options de chargement des données dans TensorFlow
La première étape avant d'entraîner un algorithme d'apprentissage automatique consiste à charger les données. Il existe deux manières courantes de charger des données:
1. Charger les données en mémoire: c'est la méthode la plus simple. Vous chargez toutes vos données en mémoire sous la forme d'un seul tableau. Vous pouvez écrire un code Python. Ces lignes de code ne sont pas liées à Tensorflow.
2. Pipeline de données Tensorflow. Tensorflow dispose d'une API intégrée qui vous aide à charger les données, à effectuer l'opération et à alimenter facilement l'algorithme d'apprentissage automatique. Cette méthode fonctionne très bien, surtout lorsque vous avez un grand ensemble de données. Par exemple, les enregistrements d'images sont connus pour être énormes et ne rentrent pas dans la mémoire. Le pipeline de données gère la mémoire par lui-même
Quelle solution utiliser?
Charger des données en mémoire
Si votre jeu de données n'est pas trop grand, c'est-à-dire moins de 10 gigaoctets, vous pouvez utiliser la première méthode. Les données peuvent tenir dans la mémoire. Vous pouvez utiliser une célèbre bibliothèque appelée Pandas pour importer des fichiers CSV. Vous en apprendrez plus sur les pandas dans le prochain tutoriel.
Charger des données avec le pipeline Tensorflow
La deuxième méthode fonctionne mieux si vous disposez d'un ensemble de données volumineux. Par exemple, si vous avez un ensemble de données de 50 gigaoctets et que votre ordinateur ne dispose que de 16 gigaoctets de mémoire, la machine plantera.
Dans cette situation, vous devez créer un pipeline Tensorflow. Le pipeline chargera les données par lots ou par petits morceaux. Chaque lot sera poussé vers le pipeline et sera prêt pour la formation. Construire un pipeline est une excellente solution car il vous permet d'utiliser le calcul parallèle. Cela signifie que Tensorflow entraînera le modèle sur plusieurs processeurs. Il favorise le calcul et permet d'entraîner un puissant réseau de neurones.
Vous verrez dans les prochains tutoriels comment construire un pipeline important pour alimenter votre réseau de neurones.
En un mot, si vous avez un petit jeu de données, vous pouvez charger les données en mémoire avec la bibliothèque Pandas.
Si vous disposez d'un ensemble de données volumineux et que vous souhaitez utiliser plusieurs processeurs, vous serez plus à l'aise pour travailler avec le pipeline Tensorflow.
Créer un pipeline Tensorflow
Dans l'exemple précédent, nous ajoutons manuellement trois valeurs pour X_1 et X_2. Nous allons maintenant voir comment charger des données dans Tensorflow.
Étape 1) Créez les données
Tout d'abord, utilisons la bibliothèque numpy pour générer deux valeurs aléatoires.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0,8835775 0,23766977]]
Étape 2) Créez l'espace réservé
Comme dans l'exemple précédent, nous créons un espace réservé avec le nom X. Nous devons spécifier explicitement la forme du tenseur. Au cas où, nous chargerons un tableau avec seulement deux valeurs. Nous pouvons écrire la forme comme shape = [1,2]
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Étape 3) Définissez la méthode de l'ensemble de données
Ensuite, nous devons définir le jeu de données dans lequel nous pouvons renseigner la valeur de l'espace réservé x. Nous devons utiliser la méthode tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Étape 4) Créez le pipeline
À l'étape quatre, nous devons initialiser le pipeline dans lequel les données circuleront. Nous devons créer un itérateur avec make_initializable_iterator. Nous l'appelons itérateur. Ensuite, nous devons appeler cet itérateur pour alimenter le prochain lot de données, get_next. Nous nommons cette étape get_next. Notez que dans notre exemple, il n'y a qu'un seul lot de données avec seulement deux valeurs.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
Étape 5) Exécutez l'opération
La dernière étape est similaire à l'exemple précédent. Nous lançons une session et nous exécutons l'itérateur d'opération. Nous alimentons le feed_dict avec la valeur générée par numpy. Ces deux valeurs rempliront l'espace réservé x. Ensuite, nous exécutons get_next pour imprimer le résultat.
with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
Résumé
TensorFlow signifie: TensorFlow est la bibliothèque d'apprentissage en profondeur la plus célèbre de ces dernières années. Un praticien utilisant TensorFlow peut construire n'importe quelle structure d'apprentissage en profondeur, comme CNN, RNN ou un simple réseau de neurones artificiels.
TensorFlow est principalement utilisé par les universitaires, les startups et les grandes entreprises. Google utilise TensorFlow dans presque tous les produits quotidiens de Google, y compris Gmail, Photo et Google Search Engine.
L'équipe Google Brain a développé TensorFlow pour combler le fossé entre les chercheurs et les développeurs de produits. En 2015, ils ont rendu TensorFlow public; il gagne rapidement en popularité. De nos jours, TensorFlow est la bibliothèque d'apprentissage en profondeur avec le plus de référentiels sur GitHub.
Les praticiens utilisent Tensorflow car il est facile à déployer à grande échelle. Il est conçu pour fonctionner dans le cloud ou sur des appareils mobiles tels que iOs et Android.
Tensorflow fonctionne dans une session. Chaque session est définie par un graphe avec différents calculs. Un exemple simple peut être de multiplier en nombre. Dans Tensorflow, trois étapes sont requises:
- Définir la variable
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
- Définir le calcul
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Exécutez l'opération
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
Une pratique courante dans Tensorflow consiste à créer un pipeline pour charger les données. Si vous suivez ces cinq étapes, vous pourrez charger des données sur TensorFLow
- Créer les données
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Créer l'espace réservé
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Définir la méthode de l'ensemble de données
dataset = tf.data.Dataset.from_tensor_slices(x)
- Créer le pipeline
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Exécutez le programme
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))