Aller au contenu principal

Représentation des données

Pour représenter des données multidimensionnelles, pour les modèles d’IA, on utilise le concept de tenseur.

Tenseur

Type de tenseurDimensionsExemple d’utilisationReprésentation en Python (NumPy)
Scalaire0DUn nombre (ex. : température)np.array(25)
Vecteur1DListe de nombres (ex. : caractéristiques d'une maison)np.array([1, 2, 3])
Matrice2DTableau de nombres (ex. : image en N/B)np.array([[1, 2], [3, 4]])
Tenseur3D+Matrice de matrices (ex. : image en couleur)np.array([[[R,G,B], ...], ...]) (RGB)

Le mot « tenseur » est le terme générique qui regroupe scalaire, vecteur, matrice et tenseur, quel que soit le nombre de dimensions.

  • Scalaire : ordre = 0 (un seul nombre).
  • Vecteur : ordre = 1 (liste de nombres).
  • Matrice : ordre = 2 (tableau 2D).
  • Tenseur : ordre ≥ 3 (tableau nD).
attention

En informatique (ex: bibliothèques comme TensorFlow, PyTorch ou NumPy), on utilise souvent le mot « dimension » pour parler de l'ordre (on dit « un tableau de dimension 3 » pour un tenseur d'ordre 3).

Par exemple :

  • Un vecteur (ordre 1) a une dimension (longueur).
  • Une matrice (ordre 2) a deux dimensions (lignes et colonnes).
  • Un tenseur (ordre 3 ou plus) a trois dimensions ou plus (ex: hauteur, largeur, couleur, etc.).
info

Dans un réseau de neurones, les entrées, poids et sorties sont tous des tenseurs.


Scalaire pour une température

Qu'est-ce qu'un scalaire ?

Un scalaire est une valeur unique (un seul nombre), sans dimension ni structure complexe.


Exemple concret

Imaginons une température mesurée en un point précis :

  • Valeur : 25°C

Un scalaire est simplement un nombre unique, sans dimension.


Stocker cette température dans un scalaire

Comment stocker cette température dans un scalaire avec Python ?

En Python, on stocke cette température dans un scalaire (un nombre) ou un tableau NumPy de dimension 0 :

import numpy as np

temperature = np.array(25)

print("Forme du scalaire :", temperature.shape) # ()
print("Valeur du scalaire :", temperature) # 25

Explication :

  • () signifie : scalaire (0 dimension).
  • C’est simplement un nombre, sans structure complexe.
Pour installer NumPy et Matplotlib
pip install numpy matplotlib

Stocker plusieurs températures dans un vecteur

Comment stocker plusieurs températures dans un vecteur ?

Si on mesure la température à différents moments, on peut stocker ces valeurs dans un vecteur 1D :

temperatures = np.array([22, 25, 23, 27, 24])

print("Forme du vecteur :", temperatures.shape) # (5,)
print("Valeurs :", temperatures)

Explication :

  • (5,) signifie : un vecteur de 5 températures.

Afficher une température

Comment afficher une température ?

Pour afficher une seule température (scalaire), on peut utiliser l'interpolation avec une chaine de caractères formatée :

print(f"Température actuelle : {temperature}°C")

Pour afficher plusieurs températures (vecteur), on peut utiliser matplotlib pour tracer un graphique simple :

import matplotlib.pyplot as plt

plt.plot(temperatures, marker='o')
plt.title("Évolution de la température")
plt.xlabel("Temps")
plt.ylabel("Température (°C)")
plt.show()

Pour installer NumPy et Matplotlib
pip install numpy matplotlib

Vecteur pour les infos d'une maison

Qu'est-ce qu'un vecteur ?

Un vecteur est une liste ordonnée de nombres, représentant des caractéristiques ou des coordonnées dans un espace multidimensionnel.


Analogie visuelle

Imaginez un tableau Excel avec 300 colonnes.

Chaque ligne représente un mot, et chaque colonne une caractéristique invisible.

Le vecteur est simplement la liste des valeurs sur cette ligne.

  • Opérations : On peut faire v(roi) - v(homme) + v(femme) = v(reine), comme en algèbre classique !

Exemple concret

Imaginons une maison décrite par 2 caractéristiques (features) :

  • Surface (en m²)
  • Nombre de chambres

TODO: Ajouter une image simple d’un vecteur avec 2 coordonnées (surface, chambres)

Voici à quoi ressemble ce vecteur de caractéristiques :

CaractéristiqueValeur
Surface120
Chambres3

Imaginons une maison décrite par 4 caractéristiques (features) :

  • Surface (en m²)
  • Nombre de chambres
  • Âge (en années)
  • Prix (en milliers d’euros)

Voici à quoi ressemble ce vecteur de caractéristiques :

CaractéristiqueValeur
Surface120
Chambres3
Âge10
Prix350

Stocker ces infos dans un vecteur

Comment stocker ces caractéristiques dans un vecteur avec Python ?

En Python, on stocke ces caractéristiques dans un vecteur 1D (une liste de nombres) :

import numpy as np

caracteristiques_maison = np.array([120, 3, 10, 350])

print("Forme du vecteur :", caracteristiques_maison.shape) # (4,)

Explication :

  • (4,) signifie : un vecteur de 4 éléments.
  • Chaque élément est une caractéristique de la maison.

Normaliser le vecteur

Comment normaliser ce vecteur pour que toutes les valeurs soient entre 0 et 1 ?

On peut normaliser chaque valeur pour qu’elle soit entre 0 et 1 (utile pour beaucoup d’algorithmes d’IA) :

# Valeurs minimales et maximales pour chaque caractéristique (exemple)
min_vals = np.array([0, 1, 0, 0])
max_vals = np.array([200, 10, 50, 500])

# Normalisation
vecteur_normalise = (caracteristiques_maison - min_vals) / (max_vals - min_vals)

print("Vecteur normalisé :", vecteur_normalise)
# Résultat : [0.6, 0.25, 0.2, 0.7]

Stocker plusieurs maisons

Comment stocker les caractéristiques de plusieurs maisons ?

Si on a 3 maisons, on peut stocker leurs caractéristiques dans une matrice 2D (chaque ligne = une maison) :

maisons = np.array([
[120, 3, 10, 350], # Maison 1
[80, 2, 5, 250], # Maison 2
[150, 4, 20, 450] # Maison 3
])

print("Forme de la matrice :", maisons.shape) # (3, 4)

Explication :

  • (3, 4) signifie : 3 maisons, 4 caractéristiques chacune.

Matrice pour une image en niveaux de gris

Qu'est-ce qu'une matrice ?

Une matrice est un tableau à 2 dimensions (2D) de nombres, organisé en lignes et colonnes.


Exemple concret

Imaginons une toute petite image en gris : 2 pixels de haut x 2 pixels de large. Chaque pixel est représenté par une seule valeur (entre 0 pour noir et 255 pour blanc).

Voici à quoi ressemble cette image en tableau :

Pixel 1Pixel 2
Ligne 150200
Ligne 210025

Stocker cette image dans une matrice

Comment stocker cette image dans une matrice avec Python ?

En Python, on stocke cette image dans un tenseur 2D (une matrice) :

import numpy as np

image_gris = np.array([
[50, 200], # Ligne 1
[100, 25] # Ligne 2
])

print("Forme de la matrice :", image_gris.shape) # (2, 2)

Explication :

  • (2, 2) signifie : 2 lignes, 2 colonnes.
  • Chaque nombre est la valeur d’un pixel (0=noir, 255=blanc).

Aplatir cette image en vecteur

Comment aplatir cette image en vecteur avec Python ?

On peut transformer cette image en une longue liste (vecteur) de 4 nombres (2x2) :

vecteur_gris = image_gris.flatten()
print("Vecteur aplati :", vecteur_gris)
# Résultat : [50, 200, 100, 25]

Afficher cette image

Comment afficher cette image avec Matplotlib ?

On peut afficher cette image avec Matplotlib, en précisant cmap='gray' pour indiquer qu’il s’agit de niveaux de gris :

import matplotlib.pyplot as plt
plt.imshow(image_gris, cmap='gray')
plt.axis('off') # Pas d'axes
plt.show()


Tenseur pour une image en couleur

Qu'est-ce qu'un tenseur ?

Un tenseur est une structure de données multidimensionnelle qui incluent les scalaires, vecteurs et matrices à plus de deux dimensions.


Exemple concret

Imaginons une toute petite image en couleur : 2 pixels de haut x 2 pixels de large, et chaque pixel a 3 couleurs (Rouge, Vert, Bleu).

Voici à quoi ressemble cette image en tableau :

Pixel 1Pixel 2
Ligne 1Rouge (R,V,B)Vert (R,V,B)
Ligne 2Bleu (R,V,B)Jaune (R,V,B)

Stocker cette image dans un tenseur

Comment stocker cette image dans un tenseur avec Python ?

En Python, on stocke cette image dans un tenseur 3D :

import numpy as np

image_rgb = np.array([
[ # Ligne 1
[255, 0, 0], # Pixel 1 : Rouge
[0, 255, 0] # Pixel 2 : Vert
],
[ # Ligne 2
[0, 0, 255], # Pixel 3 : Bleu
[255, 255, 0] # Pixel 4 : Jaune
]
])

print("Forme du tenseur :", image_rgb.shape) # (2, 2, 3)

Explication :

  • (2, 2, 3) signifie : 2 lignes, 2 colonnes, 3 couleurs par pixel.
  • Chaque [R, V, B] est un pixel.

Aplatir cette image en vecteur

Comment aplatir cette image en vecteur avec Python ?

On peut transformer cette image en une longue liste (vecteur) de 12 nombres (2x2x3) :

vecteur_image = image_rgb.flatten()
print("Vecteur aplati :", vecteur_image)
# Résultat : [255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 0]

Afficher cette image

Comment afficher cette image avec Matplotlib ?

On peut aussi afficher cette image avec Matplotlib :

import matplotlib.pyplot as plt
plt.imshow(image_rgb)
plt.axis('off') # Pas d'axes
plt.show()

Test de mémorisation/compréhension


Quel est le nom générique qui regroupe scalaire, vecteur, matrice et structures de rang ≥ 3 ?


Quelle est la forme affichée par NumPy pour un scalaire créé avec np.array(25) ?


Combien de dimensions (shape) possède le tenseur qui représente une image RGB de 2x2 pixels ?


Quelle opération permet de rendre toutes les valeurs d’un vecteur comprises entre 0 et 1 ?


Combien d’éléments contient le vecteur obtenu après aplatissement d’une image RGB 2x2 pixels ?


Que représente chaque sous-liste [R, V, B] dans le tenseur image_rgb ?


Quel est le principal intérêt de normaliser un vecteur de caractéristiques ?


Combien de dimensions spatiales possède une matrice représentant une image en niveaux de gris ?