Operaciones de Reducción
Operaciones de Reducción
En el ámbito de las operaciones con tensores, existen numerosas tareas en las que es necesario reducir las dimensiones de nuestros datos, ya sea resumiéndolos a lo largo de uno o más ejes. Por ejemplo, si tenemos un tensor 2D (una matriz), una operación de reducción puede calcular un valor para cada fila o columna, resultando en un tensor 1D (un vector). TensorFlow ofrece un conjunto de operaciones para lograr esto y, en este capítulo, exploraremos las operaciones de reducción más utilizadas.
Suma, Media, Máximo y Mínimo
TensorFlow ofrece los siguientes métodos para estos cálculos:
tf.reduce_sum()
: calcula la suma de todos los elementos del tensor o a lo largo de un eje específico;tf.reduce_mean()
: calcula la media de los elementos del tensor;tf.reduce_max()
: determina el valor máximo en el tensor;tf.reduce_min()
: encuentra el valor mínimo en el tensor.
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())
El método .numpy()
se utilizó para convertir los tensores en arreglos de NumPy, ofreciendo una presentación visual más clara de los números al mostrarlos.
Operaciones a lo largo de ejes específicos
Los tensores pueden tener múltiples dimensiones, y en ocasiones se desea realizar reducciones a lo largo de un eje específico. El parámetro axis
permite especificar qué eje o ejes se desean reducir.
axis=0
: realiza la operación a lo largo de las filas (resultando en un vector columna);axis=1
: realiza la operación a lo largo de las columnas (resultando en un vector fila);- Es posible reducir a lo largo de varios ejes simultáneamente proporcionando una lista al parámetro
axis
; - Cuando se reduce el rango del tensor, se puede usar
keepdims=True
para conservar la dimensión reducida como 1.
Para un tensor 2D (matriz):
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())
Cuando ejecutas una operación de reducción a lo largo de un eje específico, esencialmente eliminas ese eje del tensor, agregando todos los tensores dentro de ese eje elemento por elemento. El mismo efecto se mantiene para cualquier número de dimensiones.
Así es como se ve para un tensor 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())
Existen muchas otras operaciones de reducción en TensorFlow, pero funcionan bajo los mismos principios.
Swipe to start coding
Contexto
Eres un científico de datos en una agencia de investigación meteorológica. Se te ha proporcionado un tensor que contiene lecturas meteorológicas de varias ciudades durante varios días. El tensor tiene la siguiente estructura:
- Dimensión 1: representa diferentes ciudades;
- Dimensión 2: representa diferentes días.
- Cada entrada en el tensor es una tupla de
(temperature, humidity)
.
Objetivo
- Calcular la temperatura promedio para cada ciudad durante todos los días.
- Calcular la humedad máxima registrada en todas las ciudades para cada día.
Nota
En este tensor, el primer número de cada tupla representa la temperatura (en grados Celsius) y el segundo número representa la humedad (en porcentaje) para ese día y ciudad.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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
Operaciones de Reducción
Desliza para mostrar el menú
Operaciones de Reducción
En el ámbito de las operaciones con tensores, existen numerosas tareas en las que es necesario reducir las dimensiones de nuestros datos, ya sea resumiéndolos a lo largo de uno o más ejes. Por ejemplo, si tenemos un tensor 2D (una matriz), una operación de reducción puede calcular un valor para cada fila o columna, resultando en un tensor 1D (un vector). TensorFlow ofrece un conjunto de operaciones para lograr esto y, en este capítulo, exploraremos las operaciones de reducción más utilizadas.
Suma, Media, Máximo y Mínimo
TensorFlow ofrece los siguientes métodos para estos cálculos:
tf.reduce_sum()
: calcula la suma de todos los elementos del tensor o a lo largo de un eje específico;tf.reduce_mean()
: calcula la media de los elementos del tensor;tf.reduce_max()
: determina el valor máximo en el tensor;tf.reduce_min()
: encuentra el valor mínimo en el tensor.
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())
El método .numpy()
se utilizó para convertir los tensores en arreglos de NumPy, ofreciendo una presentación visual más clara de los números al mostrarlos.
Operaciones a lo largo de ejes específicos
Los tensores pueden tener múltiples dimensiones, y en ocasiones se desea realizar reducciones a lo largo de un eje específico. El parámetro axis
permite especificar qué eje o ejes se desean reducir.
axis=0
: realiza la operación a lo largo de las filas (resultando en un vector columna);axis=1
: realiza la operación a lo largo de las columnas (resultando en un vector fila);- Es posible reducir a lo largo de varios ejes simultáneamente proporcionando una lista al parámetro
axis
; - Cuando se reduce el rango del tensor, se puede usar
keepdims=True
para conservar la dimensión reducida como 1.
Para un tensor 2D (matriz):
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())
Cuando ejecutas una operación de reducción a lo largo de un eje específico, esencialmente eliminas ese eje del tensor, agregando todos los tensores dentro de ese eje elemento por elemento. El mismo efecto se mantiene para cualquier número de dimensiones.
Así es como se ve para un tensor 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())
Existen muchas otras operaciones de reducción en TensorFlow, pero funcionan bajo los mismos principios.
Swipe to start coding
Contexto
Eres un científico de datos en una agencia de investigación meteorológica. Se te ha proporcionado un tensor que contiene lecturas meteorológicas de varias ciudades durante varios días. El tensor tiene la siguiente estructura:
- Dimensión 1: representa diferentes ciudades;
- Dimensión 2: representa diferentes días.
- Cada entrada en el tensor es una tupla de
(temperature, humidity)
.
Objetivo
- Calcular la temperatura promedio para cada ciudad durante todos los días.
- Calcular la humedad máxima registrada en todas las ciudades para cada día.
Nota
En este tensor, el primer número de cada tupla representa la temperatura (en grados Celsius) y el segundo número representa la humedad (en porcentaje) para ese día y ciudad.
Solución
¡Gracias por tus comentarios!
single