Tenseur et dtype (uint8, float32, …), c’est quoi ? – Comprendre Rapidement

Tenseur, dtype… ce sont des mots que l’on retrouve souvent lorsque l’on fait du Deep Learning mais concrètement qu’est-ce que c’est ?

Nous avons déjà aborder la base du Deep Learning dans un article précédent.

Aujourd’hui, nous allons continuer sur notre lancée et discuter du type de données traitées par un modèle de Deep Learning : les tenseurs !

Les tenseurs sont des conteneurs de données, un ensemble qui permet de contenir plusieurs données. Des données qui sont dans la majorité des cas sous formes numériques.

Photo by Luis Tosta on Unsplash

Les Tenseurs

Les tenseurs sont donc des conteneurs de données à plusieurs dimensions, on peut aussi dire « à plusieurs axes« .

Certains d’entre vous connaissent peut-être déjà des exemples de conteneurs de données.. si ce n’est pas le cas nous allons voir ça maintenant !

Les vecteurs

Le plus basique des conteneurs est ce qu’on appelle un vecteur.

Un vecteur contient plusieurs valeurs qui sont ordonnées sur une ligne, sur un axe, comme cela:

vecteur = [5, 3, 9, 8, 2]

Ce vecteur contient donc 5 valeurs. Il a 5 entrées sur un seul axe.

Sa forme, ou shape s’écrit : (5)

Les vecteurs sont aussi appelé 1D tensor car ils n’ont qu’un seul axe, qu’une seule dimension.

Les matrices

Ensuite, il y a les matrices. L’idée est la même que pour les vecteurs.

Le vecteur possèdent des valeurs ordonnées sur une ligne.

Et la matrice possèdent des vecteurs ordonnés sur une ligne. Comme cela:

matrice = [vecteur_1, vecteur_2, vecteur_3, vecteur_4]

Avec plus de détails on pourrait noter la matrice comme ci:

matrice = [[5, 3, 9, 8], [6, 8, 15, 3], [9, 7, 2, 3]]

Cette matrice contient donc 3 vecteurs ayant chacun 4 valeurs.

Autrement dit, cette matrice a 3 entrées sur un axe et 4 entrées sur l’autre axe.

Sa forme, ou shape s’écrit : (3, 4)

Les matrices sont aussi appelés 2D tensor. Une matrice est donc un tenseur à deux dimensions, à deux axes. Un axe correspondant aux vecteurs, et un axe correspondant aux valeurs contenues dans les vecteurs.

Et plus généralement…

… les tenseurs sont des conteneurs pouvant avoir entre 0 et N dimensions.

  • À une dimension, les tenseurs sont appelés des vecteurs
  • À deux dimensions, les tenseurs sont appelés des matrices

Si on reprend la même idée que précédemment un tenseur à trois dimensions possèdent des matrices ordonnés sur une ligne, un axe. Comme cela:

3D_tensor = [matrice_1, matrice_2, matrice_3, matrice_4]

Ou encore, avec plus de détails:

3D_tensor = [[[5, 3, 9, 8], [6, 8, 15, 3], [9, 7, 2, 3]],
             [[4, 10, 3, 2], [7, 9, 4, 2], [1, 8, 8, 1]],
             [[9, 3, 8, 1], [4, 5, 2, 2], [9, 7, 1, 9]]]

Ce tenseur contient donc 3 matrices contenant elles-mêmes 3 vecteurs ayant chacun 4 valeurs.


CRÉER TON APPLICATION IA !

Reçois tes 5 JOURS De Formation GRATUITE Pour Apprendre À Créer Ton APPLICATION d’INTELLIGENCE ARTIFICIELLE !

Tous les fondamentaux de la création d’Application IA : les approches, les outils et techniques, les librairies et framework, et bien d'autres ! Découvres étape par étape la création d’application de Deep Learning (tu apprendras même à trouver des idées d’appli !). En bonus, tu recevras notre Guide Ultime du Deep Learning !


Ce tenseur a donc 3 entrées sur un axe, 3 entrées sur un autre axe et 4 entrées sur le dernier axe.

Sa forme, ou shape s’écrit : (3, 3, 4)

Et on peut continuer ainsi avec le nombre de dimensions que l’on veut, 4D tensor, 5D tensor, …

En vérité pour ce qui est du Deep Learning nous n’utiliserons presque jamais des tenseurs de dimensions supérieur à cinq.

Des exemples plus concrets de tenseurs à plusieurs dimensions:

  • 2D tensor : une image en noir et blanc – une matrice qui contient des valeurs pour chaque pixel
  • 3D tensor : une image en couleur – un vecteur qui contient trois matrices, une pour chaque couleur primaire (rouge, vert, bleu)
  • 4D tensor : une vidéo en couleur – un vecteur qui contient plusieurs images en couleur sur un même axe
  • 5D tensor : une série de vidéos – un vecteur qui contient plusieurs vidéos

Le dtype (uint8, float32, …)

Une notion dont nous n’avons pas encore parlé est le type des valeurs contenues dans un tenseur aussi appelé dtype.

Le dtype c’est la plage sur laquelle sont codé les valeurs (entier ou réel). Ces valeurs sont codés en bits. Par exemple le dtype int8 sera codé sur 8 bits, le int16 sur 16 bits, etc.

Les bits font référence à la mémoire allouée pour stocker les données dans chaque cellule d’un vecteur. Ainsi selon le bit associé la valeur stockées dans une cellule pourra être plus ou moins grande.

Par exemple si une variable x a pour dtype uint8 sa valeur ne pourra pas excéder 255. Vous pouvez faire le test vous-même sur Python 🙂

import numpy as np
x = 256
np.uint8(x)

Python vous retournera la valeur 0. En fait si la valeur est supérieur à 255, le dtype va reparcourir sa plage. Ainsi pour 256, on obtient 0; pour 257 on obtient 1; etc.

Voilà les différentes plages que proposent la librairie Numpy.

Plages uint

  • uint8 [0: 255]
  • uint16- [0: 65535]
  • uint32 [0: 4294967295]
  • uint64 [0: 18446744073709551615]

Plage int

  • int8 [-128: 127]
  • int16 [-32768: 32767]
  • int32 [-2147483648: 2147483647]
  • int64- [-9223372036854775808: 9223372036854775807]

Plages float

  • float16 [-65500.0: 65500.0]
  • float32 [-3.4028235e+38: 3.4028235e+38]
  • float64 [-1.7976931348623157e+308: 1.7976931348623157e+308]

Vous pouvez d’ailleurs modifier directement l’encodage des valeurs d’un tenseur avec la fonction astype(), utilisé comme suit:

nouveau_tenseur = tenseur.astype('float32') 

Ce changement d’encodage peut notamment être utile si l’on veut changer l’encodage couleur d’une image, par exemple de RVB à Noir et Blanc.

tenseur dtype

sources


CRÉER TON APPLICATION IA !

Reçois tes 5 JOURS De Formation GRATUITE Pour Apprendre À Créer Ton APPLICATION d’INTELLIGENCE ARTIFICIELLE !

Tous les fondamentaux de la création d’Application IA : les approches, les outils et techniques, les librairies et framework, et bien d'autres ! Découvres étape par étape la création d’application de Deep Learning (tu apprendras même à trouver des idées d’appli !). En bonus, tu recevras notre Guide Ultime du Deep Learning !


Tom Keldenich
Tom Keldenich

Data Engineer & passionné d'Intelligence Artificielle !

Fondateur du site Inside Machine Learning

2 commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.