Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Opérations de Réduction | Tenseurs
Introduction à TensorFlow
course content

Contenu du cours

Introduction à TensorFlow

Introduction à TensorFlow

1. Tenseurs
2. Notions de Base de TensorFlow

book
Opérations de Réduction

Opérations de Réduction

Dans le monde des opérations sur les tenseurs, il existe de nombreuses tâches où nous devons réduire les dimensions de nos données, soit en les résumant sur un ou plusieurs axes. Par exemple, si nous avons un tenseur 2D (une matrice), une opération de réduction pourrait calculer une valeur pour chaque ligne ou chaque colonne, résultant en un tenseur 1D (un vecteur). TensorFlow offre un ensemble d'opérations pour accomplir cela, et dans ce chapitre, nous explorerons les opérations de réduction les plus couramment utilisées.

Somme, Moyenne, Maximum et Minimum

TensorFlow propose les méthodes suivantes pour ces calculs :

  • tf.reduce_sum() : Calcule la somme de tous les éléments du tenseur ou le long d'un axe spécifique ;
  • tf.reduce_mean() : Calcule la moyenne des éléments du tenseur ;
  • tf.reduce_max() : Détermine la valeur maximale dans le tenseur ;
  • tf.reduce_min() : Trouve la valeur minimale dans le tenseur.
12345678910111213141516171819
import tensorflow as tf tensor = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) # Calculate sum of all elements total_sum = tf.reduce_sum(tensor) print("Total Sum:", total_sum.numpy()) # Calculate mean of all elements mean_val = tf.reduce_mean(tensor) print("Mean Value:", mean_val.numpy()) # Determine the maximum value max_val = tf.reduce_max(tensor) print("Maximum Value:", max_val.numpy()) # Find the minimum value min_val = tf.reduce_min(tensor) print("Minimum Value:", min_val.numpy())
copy

Remarque

La méthode .numpy() a été utilisée pour convertir les tenseurs en tableaux NumPy, offrant une présentation visuelle plus claire des nombres lorsqu'ils sont affichés.

Opérations le long d'axes spécifiques

Les tenseurs peuvent avoir plusieurs dimensions, et parfois nous voulons effectuer des réductions le long d'un axe spécifique. Le paramètre axis nous permet de spécifier quel axe ou quels axes nous voulons réduire.

  • axis=0: Effectuer l'opération le long des lignes (résultant en un vecteur colonne);
  • axis=1: Effectuer l'opération le long des colonnes (résultant en un vecteur ligne);
  • Il est possible de réduire le long de plusieurs axes simultanément en fournissant une liste au paramètre axis;
  • Lorsque le rang du tenseur est réduit, vous pouvez utiliser keepdims=True pour conserver la dimension réduite à 1.

Pour un tenseur 2D (matrice) :

1234567891011121314151617181920
import tensorflow as tf tensor = tf.constant([[1., 2.], [3., 4.], [5., 6.]]) # Calculate the sum of each column col_sum = tf.reduce_sum(tensor, axis=0) print("Column-wise Sum:", col_sum.numpy()) # Calculate the maximum of each row col_max = tf.reduce_max(tensor, axis=1) print("Row-wise Max:", col_max.numpy()) # Calculate the mean of the whole tensor (reduce along both directions) # Equivalent to not specifying the axis at all total_mean = tf.reduce_mean(tensor, axis=(0, 1)) print("Total Mean:", total_mean.numpy()) # Calculate the mean of the whole tensor (keeping reduced dimensions) total_mean_dim = tf.reduce_mean(tensor, axis=(0, 1), keepdims=True) print("Total Mean (saving dimensions):", total_mean_dim.numpy())
copy

Remarque

Lorsque vous exécutez une opération de réduction le long d'un axe spécifique, vous éliminez essentiellement cet axe du tenseur, agrégeant tous les tenseurs au sein de cet axe élément par élément. Le même effet restera pour n'importe quel nombre de dimensions.

Voici à quoi cela ressemble pour un tenseur 3D :

12345678910111213141516171819
import tensorflow as tf tensor = tf.constant([ [[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]] ]) # Calculate the sum along axis 0 sum_0 = tf.reduce_sum(tensor, axis=0) print("Sum axis 0:\n", sum_0.numpy()) # Calculate the sum along axis 1 sum_1 = tf.reduce_sum(tensor, axis=1) print("Sum axis 1:\n", sum_1.numpy()) # Calculate the sum along axes 0 and 1 sum_0_1 = tf.reduce_sum(tensor, axis=(0, 1)) print("Sum axes 0 and 1:\n", sum_0_1.numpy())
copy

Remarque

De nombreuses autres opérations de réduction existent dans TensorFlow, mais elles fonctionnent selon les mêmes principes.

Tâche

Swipe to start coding

Contexte

Vous êtes un data scientist dans une agence de recherche météorologique. On vous a donné un tenseur contenant des relevés météorologiques de différentes villes sur plusieurs jours. Le tenseur a la structure suivante :

  • Dimension 1 : Représente différentes villes.
  • Dimension 2 : Représente différents jours.
  • Chaque entrée dans le tenseur est un tuple de (temperature, humidity).

Objectif

  1. Calculer la température moyenne pour chaque ville sur tous les jours.
  2. Calculer la humidité maximale enregistrée dans toutes les villes pour chaque jour.

Remarque

Dans ce tenseur, le premier nombre de chaque tuple représente la température (en Celsius) et le deuxième nombre représente l'humidité (en pourcentage) pour ce jour et cette ville.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 12
toggle bottom row

book
Opérations de Réduction

Opérations de Réduction

Dans le monde des opérations sur les tenseurs, il existe de nombreuses tâches où nous devons réduire les dimensions de nos données, soit en les résumant sur un ou plusieurs axes. Par exemple, si nous avons un tenseur 2D (une matrice), une opération de réduction pourrait calculer une valeur pour chaque ligne ou chaque colonne, résultant en un tenseur 1D (un vecteur). TensorFlow offre un ensemble d'opérations pour accomplir cela, et dans ce chapitre, nous explorerons les opérations de réduction les plus couramment utilisées.

Somme, Moyenne, Maximum et Minimum

TensorFlow propose les méthodes suivantes pour ces calculs :

  • tf.reduce_sum() : Calcule la somme de tous les éléments du tenseur ou le long d'un axe spécifique ;
  • tf.reduce_mean() : Calcule la moyenne des éléments du tenseur ;
  • tf.reduce_max() : Détermine la valeur maximale dans le tenseur ;
  • tf.reduce_min() : Trouve la valeur minimale dans le tenseur.
12345678910111213141516171819
import tensorflow as tf tensor = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) # Calculate sum of all elements total_sum = tf.reduce_sum(tensor) print("Total Sum:", total_sum.numpy()) # Calculate mean of all elements mean_val = tf.reduce_mean(tensor) print("Mean Value:", mean_val.numpy()) # Determine the maximum value max_val = tf.reduce_max(tensor) print("Maximum Value:", max_val.numpy()) # Find the minimum value min_val = tf.reduce_min(tensor) print("Minimum Value:", min_val.numpy())
copy

Remarque

La méthode .numpy() a été utilisée pour convertir les tenseurs en tableaux NumPy, offrant une présentation visuelle plus claire des nombres lorsqu'ils sont affichés.

Opérations le long d'axes spécifiques

Les tenseurs peuvent avoir plusieurs dimensions, et parfois nous voulons effectuer des réductions le long d'un axe spécifique. Le paramètre axis nous permet de spécifier quel axe ou quels axes nous voulons réduire.

  • axis=0: Effectuer l'opération le long des lignes (résultant en un vecteur colonne);
  • axis=1: Effectuer l'opération le long des colonnes (résultant en un vecteur ligne);
  • Il est possible de réduire le long de plusieurs axes simultanément en fournissant une liste au paramètre axis;
  • Lorsque le rang du tenseur est réduit, vous pouvez utiliser keepdims=True pour conserver la dimension réduite à 1.

Pour un tenseur 2D (matrice) :

1234567891011121314151617181920
import tensorflow as tf tensor = tf.constant([[1., 2.], [3., 4.], [5., 6.]]) # Calculate the sum of each column col_sum = tf.reduce_sum(tensor, axis=0) print("Column-wise Sum:", col_sum.numpy()) # Calculate the maximum of each row col_max = tf.reduce_max(tensor, axis=1) print("Row-wise Max:", col_max.numpy()) # Calculate the mean of the whole tensor (reduce along both directions) # Equivalent to not specifying the axis at all total_mean = tf.reduce_mean(tensor, axis=(0, 1)) print("Total Mean:", total_mean.numpy()) # Calculate the mean of the whole tensor (keeping reduced dimensions) total_mean_dim = tf.reduce_mean(tensor, axis=(0, 1), keepdims=True) print("Total Mean (saving dimensions):", total_mean_dim.numpy())
copy

Remarque

Lorsque vous exécutez une opération de réduction le long d'un axe spécifique, vous éliminez essentiellement cet axe du tenseur, agrégeant tous les tenseurs au sein de cet axe élément par élément. Le même effet restera pour n'importe quel nombre de dimensions.

Voici à quoi cela ressemble pour un tenseur 3D :

12345678910111213141516171819
import tensorflow as tf tensor = tf.constant([ [[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]] ]) # Calculate the sum along axis 0 sum_0 = tf.reduce_sum(tensor, axis=0) print("Sum axis 0:\n", sum_0.numpy()) # Calculate the sum along axis 1 sum_1 = tf.reduce_sum(tensor, axis=1) print("Sum axis 1:\n", sum_1.numpy()) # Calculate the sum along axes 0 and 1 sum_0_1 = tf.reduce_sum(tensor, axis=(0, 1)) print("Sum axes 0 and 1:\n", sum_0_1.numpy())
copy

Remarque

De nombreuses autres opérations de réduction existent dans TensorFlow, mais elles fonctionnent selon les mêmes principes.

Tâche

Swipe to start coding

Contexte

Vous êtes un data scientist dans une agence de recherche météorologique. On vous a donné un tenseur contenant des relevés météorologiques de différentes villes sur plusieurs jours. Le tenseur a la structure suivante :

  • Dimension 1 : Représente différentes villes.
  • Dimension 2 : Représente différents jours.
  • Chaque entrée dans le tenseur est un tuple de (temperature, humidity).

Objectif

  1. Calculer la température moyenne pour chaque ville sur tous les jours.
  2. Calculer la humidité maximale enregistrée dans toutes les villes pour chaque jour.

Remarque

Dans ce tenseur, le premier nombre de chaque tuple représente la température (en Celsius) et le deuxième nombre représente l'humidité (en pourcentage) pour ce jour et cette ville.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 12
Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
We're sorry to hear that something went wrong. What happened?
some-alt