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.

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.

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, …

Au fait, si ton objectif est d'apprendre le Deep Learning - j’ai préparé pour toi le Plan d’action pour Maîtriser les Réseaux de neurones.

7 jours de conseils gratuits d’un ingénieur spécialisé en Intelligence Artificielle pour apprendre à maîtriser les réseaux de neurones à partir de zéro :

  • Planifie ton apprentissage
  • Structure tes projets
  • Développe tes algorithmes d’Intelligence Artificielle

J’ai basé ce programme sur des faits scientifiques, des approches éprouvées par des chercheurs mais également mes propres techniques que j'ai conçues au fil de mes expériences dans le domaine du Deep Learning.

Pour y accéder, clique ici :

RECEVOIR MON PLAN D'ACTION

RECEVOIR MON PLAN D'ACTION

À présent, on peut revenir à ce que je mentionnais précédemment.

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.

Aujourd’hui, c’est grâce au Deep Learning que les leaders de la tech peuvent créer les Intelligences Artificielles les plus puissantes.

Si tu veux approfondir tes connaissances dans le domaine, tu peux accéder à mon Plan d’action pour Maîtriser les Réseaux de neurones.

Un programme de 7 cours gratuits que j’ai préparé pour te guider dans ton parcours pour apprendre le Deep Learning.

Si ça t’intéresse, clique ici :

RECEVOIR MON PLAN D’ACTION

tenseur dtype tenseur dtype

sources:

Un dernier mot, si tu veux aller plus loin et apprendre le Deep Learning - j’ai préparé pour toi le Plan d’action pour Maîtriser les Réseaux de neurones.

7 jours de conseils gratuits d’un ingénieur spécialisé en Intelligence Artificielle pour apprendre à maîtriser les réseaux de neurones à partir de zéro :

  • Planifie ton apprentissage
  • Structure tes projets
  • Développe tes algorithmes d’Intelligence Artificielle

J’ai basé ce programme sur des faits scientifiques, des approches éprouvées par des chercheurs mais également mes propres techniques que j'ai conçues au fil de mes expériences dans le domaine du Deep Learning.

Pour y accéder, clique ici :

RECEVOIR MON PLAN D'ACTION

RECEVOIR MON PLAN D'ACTION

Tom Keldenich
Tom Keldenich

Ingénieur spécialisé en Intelligence Artificielle et passionné de données !

Fondateur du site Inside Machine Learning

2 commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

This page will not stay online forever

Enter your email to receive for free

The PANE method for Deep Learning

* indicates required

 

You will receive one email per day for 7 days – then you will receive my newsletter.
Your information will never be given to third parties.

You can unsubscribe in 1 click from any of my emails.



Entre ton email pour recevoir gratuitement
la méthode PARÉ pour faire du Deep Learning


Tu recevras un email par jour pendant 7 jours - puis tu recevras ma newsletter.
Tes informations ne seront jamais cédées à des tiers.

Tu peux te désinscrire en 1 clic depuis n'importe lequel de mes emails.