L'apprentissage automatique est un sujet complexe, mais comme les frameworks d'apprentissage automatique (tels que TensorFlow de Google) simplifient le processus d'obtention de données, de formation de modèles, de fourniture de prédictions et d'amélioration des résultats futurs, sa mise en œuvre est beaucoup moins intimidante qu'elle ne l'était autrefois.
Créée par l'équipe Google Brain et initialement rendue publique en 2015, TensorFlow est une bibliothèque open source pour le calcul numérique et l'apprentissage automatique à grande échelle. TensorFlow regroupe un large éventail de modèles et d'algorithmes d'apprentissage automatique et d'apprentissage profond (également appelés réseaux de neurones) et les rend utiles grâce à des métaphores de programmation communes. Il fournit une API frontale pratique pour créer des applications à l'aide de Python ou de JavaScript tout en les exécutant en C++ hautes performances.
TensorFlow est en concurrence avec des frameworks tels que PyTorch et Apache MXNet pour former et exécuter des réseaux neuronaux profonds pour la classification des chiffres manuscrits, la reconnaissance d'images, l'intégration de mots, les réseaux neuronaux récurrents, les modèles séquence à séquence pour la traduction automatique, le traitement du langage naturel et basés sur la simulation. sur les EDP (équations aux dérivées partielles). Mieux encore, TensorFlow prend en charge les prévisions de production à grande échelle, en utilisant le même modèle pour la formation.
TensorFlow dispose également d'une vaste bibliothèque de modèles pré-entraînés qui peuvent être utilisés dans vos propres projets. Vous pouvez également utiliser le code du TensorFlow Model Park comme exemple de bonnes pratiques pour entraîner vos propres modèles.
TensorFlow permet aux développeurs de créer des graphiques de flux de données - des structures qui décrivent comment les données se déplacent à travers un graphique ou une série de nœuds de traitement. Chaque nœud du graphique représente une opération mathématique, et chaque connexion ou arête entre les nœuds est un tableau de données multidimensionnel, ou tenseur.
Les applications TensorFlow peuvent s'exécuter sur les cibles les plus pratiques : machine locale, cluster dans le cloud, appareils iOS et Android, CPU ou GPU. Si vous utilisez le propre cloud de Google, vous pouvez exécuter TensorFlow sur la puce TensorFlow Processing Unit (TPU) personnalisée de Google pour une accélération supplémentaire. Cependant, les modèles résultants créés par TensorFlow peuvent être déployés sur la plupart des appareils utilisés pour fournir des prédictions.
TensorFlow 2.0 a été publié en octobre 2019, avec diverses améliorations du framework basées sur les commentaires des utilisateurs, le rendant plus facile à utiliser (par exemple, en utilisant l'API KerasAPI relativement simple pour la formation des modèles) et des performances plus élevées. La formation distribuée est plus facile à exécuter grâce aux nouvelles API, et la prise en charge de TensorFlow Lite permet de déployer des modèles sur une plus grande variété de plates-formes. Cependant, le code écrit pour les versions antérieures de TensorFlow doit être réécrit (parfois légèrement, parfois de manière significative) pour tirer le meilleur parti des nouvelles fonctionnalités de TensorFlow 2.0.
Les modèles entraînés peuvent être utilisés pour fournir des prédictions en tant que service via un conteneur Docker à l'aide de l'API REST ou gRPC. Pour des scénarios de service plus avancés, vous pouvez utiliser Kubernetes
TensorFlow fournit aux programmeurs toutes ces fonctionnalités via le langage Python. Python est facile à apprendre et à utiliser, et il fournit des moyens pratiques d'exprimer comment coupler des abstractions de haut niveau. TensorFlow est pris en charge sur les versions 3.7 à 3.10 de Python et, même s'il peut fonctionner sur les versions antérieures de Python, cela n'est pas garanti.
Les nœuds et les tenseurs de TensorFlow sont des objets Python, et les applications TensorFlow elles-mêmes sont des applications Python. Cependant, les opérations mathématiques proprement dites ne sont pas effectuées en Python. Les bibliothèques de transformation fournies via TensorFlow sont écrites sous forme de binaires C++ hautes performances. Python dirige simplement le flux entre les différentes parties et fournit des abstractions de programmation de haut niveau pour les connecter entre elles.
Les travaux avancés dans TensorFlow (créer des nœuds et des couches et les relier entre eux) utilisent la bibliothèque Keras. L'API Keras est d'une simplicité trompeuse : un modèle de base à trois couches peut être défini en moins de 10 lignes de code, et le même code de formation ne nécessite que quelques lignes de code. Mais si vous souhaitez « lever le voile » et effectuer un travail plus fin, comme écrire vos propres boucles d'entraînement, vous pouvez le faire.
Python est le langage le plus populaire pour travailler avec TensorFlow et l'apprentissage automatique. Mais JavaScript est désormais également le langage de premier ordre pour TensorFlow, et l'un des énormes avantages de JavaScript est qu'il s'exécute partout où il y a un navigateur Web.
TensorFlow.js (appelé bibliothèque JavaScript TensorFlow) utilise l'API WebGL pour accélérer les calculs avec n'importe quel GPU disponible dans le système. Il peut également être exécuté à l'aide d'un backend WebAssembly, qui est plus rapide qu'un backend JavaScript classique si vous l'exécutez uniquement sur le CPU, mais il est préférable d'utiliser le GPU autant que possible. Les modèles prédéfinis vous permettent de mettre en œuvre des projets simples, vous donnant une idée de la façon dont les choses fonctionnent.
Les modèles TensorFlow formés peuvent également être déployés sur l'informatique de pointe ou sur des appareils mobiles, tels que les systèmes iOS ou Android. L'ensemble d'outils TensorFlow Lite optimise les modèles TensorFlow pour qu'ils fonctionnent correctement sur de tels appareils en vous permettant de faire des compromis sur la taille et la précision du modèle. Les modèles plus petits (c'est-à-dire 12 Mo contre 25 Mo, voire 100+ Mo) sont moins précis, mais la perte de précision est généralement faible et compensée par la vitesse et l'efficacité énergétique du modèle.
Le plus grand avantage que TensorFlow offre pour le développement de l'apprentissage automatique est l'abstraction. Les développeurs peuvent se concentrer sur la logique globale de l'application plutôt que de s'occuper des détails de la mise en œuvre des algorithmes ou de trouver la bonne façon de connecter la sortie d'une fonction à l'entrée d'une autre. TensorFlow s'occupe des détails en coulisses.
TensorFlow offre plus de commodité aux développeurs qui ont besoin de déboguer et de comprendre les applications TensorFlow. Chaque opération graphique peut être évaluée et modifiée individuellement et de manière transparente, plutôt que de construire le graphe entier comme un seul objet opaque et de l'évaluer en même temps. Ce soi-disant « mode d'exécution hâtif » était disponible en option dans les anciennes versions de TensorFlow et est désormais standard.
TensorBoard Visualization Suite vous permet d'inspecter et d'analyser le fonctionnement de vos graphiques via un tableau de bord Web interactif. Le service Tensorboard.dev (hébergé par Google) vous permet d'héberger et de partager des expériences d'apprentissage automatique écrites dans TensorFlow. Il peut être utilisé gratuitement pour stocker jusqu'à 100 Mo de données scalaires, 1 Go de données tensorielles et 1 Go de données d'objets binaires. (Veuillez noter que toutes les données hébergées dans Tensorboard.dev sont publiques, veuillez donc ne pas les utiliser pour des projets sensibles.)
TensorFlow bénéficie également de nombreux avantages grâce au soutien des organisations commerciales de premier ordre de Google. Google a piloté la croissance rapide du projet et créé de nombreux produits importants qui facilitent le déploiement et l'utilisation de TensorFlow. La puce TPU décrite ci-dessus pour accélérer les performances dans Google Cloud n'est qu'un exemple.
Certains détails de la mise en œuvre de TensorFlow rendent difficile l'obtention de résultats de formation de modèles complètement déterministes pour certaines tâches de formation. Parfois, un modèle formé sur un système sera légèrement différent d'un modèle formé sur un autre système, même s'ils reçoivent exactement les mêmes données. Les raisons de cette différence sont délicates : l'une des raisons est la manière et l'endroit où les nombres aléatoires sont générés ; l'autre est liée à un comportement non déterministe lors de l'utilisation des GPU. La branche 2.0 de TensorFlow dispose d'une option permettant d'activer le déterminisme tout au long du flux de travail avec quelques lignes de code. Cependant, cette fonctionnalité se fait au détriment des performances et ne doit être utilisée que lors du débogage des flux de travail.
TensorFlow est en concurrence avec de nombreux autres frameworks d'apprentissage automatique. PyTorch, CNTK et MXNet sont les trois principaux frameworks qui répondent à bon nombre des mêmes besoins. Jetons un coup d'œil rapide à leurs points forts et à leurs lacunes par rapport à TensorFlow :
Titre original :Qu'est-ce que TensorFlow ? La bibliothèque d'apprentissage automatique expliquée
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!