Opérations de Réduction
Opérations de réduction
Dans le domaine des opérations sur les tenseurs, de nombreuses tâches nécessitent de réduire les dimensions de nos données, soit en les résumant selon un ou plusieurs axes. Par exemple, si l’on dispose d’un tenseur 2D (une matrice), une opération de réduction peut calculer une valeur pour chaque ligne ou chaque colonne, produisant ainsi un tenseur 1D (un vecteur). TensorFlow propose 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.
12345678910111213141516171819import 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())
La méthode .numpy()
a été utilisée pour convertir les tenseurs en tableaux NumPy, offrant une présentation visuelle plus claire des nombres lors de l'affichage.
Opérations selon des axes spécifiques
Les tenseurs peuvent avoir plusieurs dimensions, et il est parfois nécessaire d'effectuer des réductions selon un axe spécifique. Le paramètre axis
permet de spécifier l'axe ou les axes à réduire.
axis=0
: effectue l'opération le long des lignes (résultant en un vecteur colonne) ;axis=1
: effectue l'opération le long des colonnes (résultant en un vecteur ligne) ;- Il est possible de réduire selon plusieurs axes simultanément en fournissant une liste au paramètre
axis
; - Lorsque le rang du tenseur est réduit, il est possible d'utiliser
keepdims=True
pour conserver la dimension réduite à 1.
Pour un tenseur 2D (matrice) :
1234567891011121314151617181920import 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())
Lorsque vous exécutez une opération de réduction le long d’un axe spécifique, vous éliminez essentiellement cet axe du tenseur, en agrégeant tous les tenseurs de cet axe élément par élément. Le même effet s’applique quel que soit le nombre de dimensions.
Voici à quoi cela ressemble pour un tenseur 3D :
12345678910111213141516171819import 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())
De nombreuses autres opérations de réduction existent dans TensorFlow, mais elles fonctionnent selon les mêmes principes.
Swipe to start coding
Contexte
Vous êtes data scientist dans une agence de recherche météorologique. Un tenseur contenant des relevés météorologiques provenant de différentes villes sur plusieurs jours vous a été confié. Le tenseur possède la structure suivante :
- Dimension 1 : représente différentes villes ;
- Dimension 2 : représente différents jours.
- Chaque entrée du tenseur est un tuple de
(temperature, humidity)
.
Objectif
- Calculer la température moyenne pour chaque ville sur l'ensemble des jours.
- Calculer la valeur maximale d'humidité enregistrée, toutes villes confondues, pour chaque jour.
Remarque
Dans ce tenseur, le premier nombre de chaque tuple correspond à la température (en degrés Celsius) et le second à l’humidité (en pourcentage) pour ce jour et cette ville.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain what the axis parameter means in more detail?
How does keepdims=True affect the output shape?
Can you show more examples with higher-dimensional tensors?
Awesome!
Completion rate improved to 5.56
Opérations de Réduction
Glissez pour afficher le menu
Opérations de réduction
Dans le domaine des opérations sur les tenseurs, de nombreuses tâches nécessitent de réduire les dimensions de nos données, soit en les résumant selon un ou plusieurs axes. Par exemple, si l’on dispose d’un tenseur 2D (une matrice), une opération de réduction peut calculer une valeur pour chaque ligne ou chaque colonne, produisant ainsi un tenseur 1D (un vecteur). TensorFlow propose 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.
12345678910111213141516171819import 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())
La méthode .numpy()
a été utilisée pour convertir les tenseurs en tableaux NumPy, offrant une présentation visuelle plus claire des nombres lors de l'affichage.
Opérations selon des axes spécifiques
Les tenseurs peuvent avoir plusieurs dimensions, et il est parfois nécessaire d'effectuer des réductions selon un axe spécifique. Le paramètre axis
permet de spécifier l'axe ou les axes à réduire.
axis=0
: effectue l'opération le long des lignes (résultant en un vecteur colonne) ;axis=1
: effectue l'opération le long des colonnes (résultant en un vecteur ligne) ;- Il est possible de réduire selon plusieurs axes simultanément en fournissant une liste au paramètre
axis
; - Lorsque le rang du tenseur est réduit, il est possible d'utiliser
keepdims=True
pour conserver la dimension réduite à 1.
Pour un tenseur 2D (matrice) :
1234567891011121314151617181920import 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())
Lorsque vous exécutez une opération de réduction le long d’un axe spécifique, vous éliminez essentiellement cet axe du tenseur, en agrégeant tous les tenseurs de cet axe élément par élément. Le même effet s’applique quel que soit le nombre de dimensions.
Voici à quoi cela ressemble pour un tenseur 3D :
12345678910111213141516171819import 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())
De nombreuses autres opérations de réduction existent dans TensorFlow, mais elles fonctionnent selon les mêmes principes.
Swipe to start coding
Contexte
Vous êtes data scientist dans une agence de recherche météorologique. Un tenseur contenant des relevés météorologiques provenant de différentes villes sur plusieurs jours vous a été confié. Le tenseur possède la structure suivante :
- Dimension 1 : représente différentes villes ;
- Dimension 2 : représente différents jours.
- Chaque entrée du tenseur est un tuple de
(temperature, humidity)
.
Objectif
- Calculer la température moyenne pour chaque ville sur l'ensemble des jours.
- Calculer la valeur maximale d'humidité enregistrée, toutes villes confondues, pour chaque jour.
Remarque
Dans ce tenseur, le premier nombre de chaque tuple correspond à la température (en degrés Celsius) et le second à l’humidité (en pourcentage) pour ce jour et cette ville.
Solution
Merci pour vos commentaires !
single