https://simseo.fr/wp-content/uploads/2022/05/Tout-ce-que-vous-devez-savoir-sur-les-tenseurs.png

Tout ce que vous devez savoir sur les tenseurs

TensorFlow est la bibliothèque de référence pour la plupart des développeurs de modèles d’apprentissage automatique. Il est livré avec la facilité de fournir une API Keras standard pour permettre aux utilisateurs de créer leurs propres réseaux de neurones et est également répandu dans les applications de recherche et commerciales.

Dans cet article, nous aborderons les bases des tenseurs :

  • Tenseurs et tableaux NumPy
  • Immutabilité d’un Tenseur
  • Tenseurs et Variables
  • Opérations
  • Illustrations avec code python

Un tenseur est un tableau multidimensionnel d’éléments avec un seul type de données. Il a deux propriétés clés – la forme et le type de données tel que flottant, entier ou chaîne.

TensorFlow inclut exécution impatiente où le code est examiné étape par étape, ce qui facilite le débogage.

Le tenseur est généralisé comme une matrice à N dimensions.

visualiser les tenseurs avec des axes croissants
Il est difficile de visualiser les tenseurs avec des axes croissants, un exemple de Rang-3 et Rang-4 tenseurs est illustré ci-dessous :

Rang-3 et Rang-4

Le différence clé entre les tenseurs et les tableaux NumPy est que les tenseurs ont un support d’accélérateur comme le GPU et le TPU et sont immuables.

Alors que les opérations TensorFlow convertissent automatiquement les tableaux NumPy en Tensors et vice versa, vous pouvez convertir explicitement l’objet tenseur en tableau NumPy comme ceci :

objet tenseur dans le tableau NumPy

Tableaux NumPy en tenseurs

Un tenseur ne peut être affecté qu’une seule fois et ne peut pas être mis à jour. Les tenseurs, comme les nombres et les chaînes python, sont immuables et ne peuvent être créés que de nouveaux. Si votre objectif est de mettre à jour la valeur du tenseur, vous devez utiliser des variables.

Apprenons comment fonctionnent les tenseurs pour comprendre le concept d’immuabilité. Considérez un calcul mathématique comme 1 + 1 = 2. Maintenant, le tenseur ne stocke pas la valeur en tant que 2, c’est le calcul effectué sur les tenseurs d’entrée qui est exécuté et renvoie la valeur 2 au tenseur de sortie.

Si une opération de nombre aléatoire est implémentée sur un tenseur, alors le nombre de fois que l’opération est exécutée, le tenseur peut contenir différentes valeurs. Mais ce sont les instructions i.eRandom number generation dans ce cas qui ont conduit le tenseur à conserver une valeur différente à chaque exécution.

Maintenant, étendons ce concept et généralisons-le. Si une opération O est effectuée sur les tenseurs d’entrée x et y, alors l’objet tenseur résultant contiendra la valeur du résultat de O(x,y). Un objet tenseur aura la même valeur si l’opération O est déterministe et des valeurs différentes à chaque fois si O est une formule aléatoire. Pour résumer, les objets tenseurs font référence à la fonction ou à l’opération qui calcule la valeur de sortie, plutôt qu’à la valeur elle-même.

Contrairement aux objets tensoriels, nous pouvons lire tf.Variable en évaluant son opération de lecture et écrire en exécutant une opération d’affectation. Le tenseur représente des expressions mathématiques complexes telles que les fonctions de perte et les gradients, tandis qu’une variable peut stocker un état tel que des matrices de poids et des filtres convolutifs pendant l’entraînement.

Familiarisez-vous avec les objets Tensor :

Objectif des tenseurs et des variables

Vous pouvez créer un tenseur avec tous les éléments remplis de valeurs 0 ou 1 en utilisant tf.ones et tf.zeros.

créer un tenseur avec tous les éléments remplis de valeurs 0 ou 1

Notez que le type de données par défaut indiqué ci-dessus est float. Un tenseur ne peut avoir qu’un seul type de données à la fois. Vous pouvez spécifier le type de données sous la forme d’un entier ci-dessous :

le type de données indiqué ci-dessus est float

Vous pouvez également modifier le type de données à l’aide de tf.cast. Nous avons créé un tenseur 1-D avec une valeur de 4,5.

Tenseur 1-D avec une valeur de 4,5

Notez que nous n’avons pas spécifié explicitement le type de données, il s’agit de float32. Vous pouvez vérifier le type de données à l’aide de dtype, comme la façon dont vous avez accédé au tableau NumPy :

type de données utilisant dtype

Le tenseur avec le type de données float a changé en entier :

est devenu entier

Comme pour créer un tenseur avec tous les éléments classés avec la valeur 1, vous pouvez également créer un tenseur d’une forme donnée avec tous les éléments définis sur 0 :

tous les éléments mis à 0

Il stocke l’état persistant des variables. Le constructeur de variable a un paramètre booléen « entraînable » qui distingue la variable entraînable qui stocke les paramètres du modèle des variables non entraînables. Cela permet un suivi facile des valeurs variables et de les enregistrer dans des points de contrôle de formation ou des SavedModels qui incluent des graphiques TensorFlow sérialisés.

Graphiques TensorFlow

Les objets tf.Variable sont construits au-dessus des objets tf.Tensor et ont des propriétés telles que le nom, la valeur, le type de données, la forme, etc. Si vous souhaitez pouvoir suivre les valeurs des paramètres de modèle mis à jour pendant la formation, donnez un ‘nom’ argument dans l’entrée lors de la création de la variable. En l’absence de nom spécifique, TensorFlow attribue un nom par défaut comme indiqué ci-dessous :

TensorFlow attribue un nom par défaut

Remarquez le nom « var_example » lors de la création d’une variable :

var_example

Il s’agit d’un nœud de graphe qui prend des tenseurs en entrée, effectue des calculs sur eux et génère des objets tenseurs. Il y a un liste riche de toutes les opérations réalisables sur les Tenseurs.

Un exemple pour effectuer une opération d’addition et de multiplication sur deux tenseurs d’entrée est illustré ci-dessous :

Opérations

De même, il existe des opérations courantes telles que tf.subtract(x,y), tf.multiply(x,y), tf.div(x,y), tf.pow(x,y), tf.exp(x), tf.sqrt(x) etc.

Avec cela, nous avons terminé cet article où nous avons expliqué les tenseurs par la visualisation, la différence entre les objets tensoriels et les variables. Nous avons également expliqué en quoi les tenseurs sont différents des variables et quand les utiliser. Ensuite, nous avons illustré par des exemples diverses opérations réalisables sur les tenseurs.