Operazioni di Riduzione
Operazioni di Riduzione
Nel contesto delle operazioni sui tensori, esistono numerosi compiti in cui è necessario ridurre le dimensioni dei dati, sia riassumendoli lungo uno o più assi. Ad esempio, se si dispone di un tensore 2D (una matrice), un'operazione di riduzione può calcolare un valore per ogni riga o colonna, producendo così un tensore 1D (un vettore). TensorFlow mette a disposizione una serie di operazioni per questo scopo e, in questo capitolo, verranno analizzate le operazioni di riduzione più comunemente utilizzate.
Somma, Media, Massimo e Minimo
TensorFlow offre i seguenti metodi per questi calcoli:
tf.reduce_sum()
: calcola la somma di tutti gli elementi del tensore o lungo un asse specifico;tf.reduce_mean()
: calcola la media degli elementi del tensore;tf.reduce_max()
: determina il valore massimo nel tensore;tf.reduce_min()
: individua il valore minimo nel tensore.
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())
Il metodo .numpy()
è stato utilizzato per convertire i tensori in array NumPy, offrendo una presentazione visiva più chiara dei numeri quando vengono visualizzati.
Operazioni lungo assi specifici
I tensori possono avere più dimensioni e, a volte, è necessario eseguire riduzioni lungo un asse specifico. Il parametro axis
consente di specificare quale asse o quali assi si desidera ridurre.
axis=0
: esegue l'operazione lungo le righe (restituendo un vettore colonna);axis=1
: esegue l'operazione lungo le colonne (restituendo un vettore riga);- È possibile ridurre simultaneamente lungo più assi fornendo una lista al parametro
axis
; - Quando il rango del tensore viene ridotto, è possibile utilizzare
keepdims=True
per mantenere la dimensione ridotta pari a 1.
Per un tensore 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())
Quando si esegue un'operazione di riduzione lungo un asse specifico, si elimina essenzialmente quell'asse dal tensore, aggregando tutti i tensori presenti su quell'asse elemento per elemento. Lo stesso effetto si mantiene per qualsiasi numero di dimensioni.
Ecco come appare per un tensore 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())
Molte altre operazioni di riduzione esistono in TensorFlow, ma si basano sugli stessi principi.
Swipe to start coding
Contesto
Sei un data scientist presso un'agenzia di ricerca meteorologica. Ti è stato fornito un tensore contenente rilevazioni meteorologiche provenienti da diverse città in diversi giorni. Il tensore ha la seguente struttura:
- Dimensione 1: rappresenta le diverse città;
- Dimensione 2: rappresenta i diversi giorni.
- Ogni elemento del tensore è una tupla di
(temperature, humidity)
.
Obiettivo
- Calcolare la temperatura media per ciascuna città su tutti i giorni.
- Calcolare il valore massimo di umidità registrato tra tutte le città per ciascun giorno.
Nota
In questo tensore, il primo numero di ogni tupla rappresenta la temperatura (in gradi Celsius) e il secondo numero rappresenta l'umidità (in percentuale) per quel giorno e città.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Operazioni di Riduzione
Scorri per mostrare il menu
Operazioni di Riduzione
Nel contesto delle operazioni sui tensori, esistono numerosi compiti in cui è necessario ridurre le dimensioni dei dati, sia riassumendoli lungo uno o più assi. Ad esempio, se si dispone di un tensore 2D (una matrice), un'operazione di riduzione può calcolare un valore per ogni riga o colonna, producendo così un tensore 1D (un vettore). TensorFlow mette a disposizione una serie di operazioni per questo scopo e, in questo capitolo, verranno analizzate le operazioni di riduzione più comunemente utilizzate.
Somma, Media, Massimo e Minimo
TensorFlow offre i seguenti metodi per questi calcoli:
tf.reduce_sum()
: calcola la somma di tutti gli elementi del tensore o lungo un asse specifico;tf.reduce_mean()
: calcola la media degli elementi del tensore;tf.reduce_max()
: determina il valore massimo nel tensore;tf.reduce_min()
: individua il valore minimo nel tensore.
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())
Il metodo .numpy()
è stato utilizzato per convertire i tensori in array NumPy, offrendo una presentazione visiva più chiara dei numeri quando vengono visualizzati.
Operazioni lungo assi specifici
I tensori possono avere più dimensioni e, a volte, è necessario eseguire riduzioni lungo un asse specifico. Il parametro axis
consente di specificare quale asse o quali assi si desidera ridurre.
axis=0
: esegue l'operazione lungo le righe (restituendo un vettore colonna);axis=1
: esegue l'operazione lungo le colonne (restituendo un vettore riga);- È possibile ridurre simultaneamente lungo più assi fornendo una lista al parametro
axis
; - Quando il rango del tensore viene ridotto, è possibile utilizzare
keepdims=True
per mantenere la dimensione ridotta pari a 1.
Per un tensore 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())
Quando si esegue un'operazione di riduzione lungo un asse specifico, si elimina essenzialmente quell'asse dal tensore, aggregando tutti i tensori presenti su quell'asse elemento per elemento. Lo stesso effetto si mantiene per qualsiasi numero di dimensioni.
Ecco come appare per un tensore 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())
Molte altre operazioni di riduzione esistono in TensorFlow, ma si basano sugli stessi principi.
Swipe to start coding
Contesto
Sei un data scientist presso un'agenzia di ricerca meteorologica. Ti è stato fornito un tensore contenente rilevazioni meteorologiche provenienti da diverse città in diversi giorni. Il tensore ha la seguente struttura:
- Dimensione 1: rappresenta le diverse città;
- Dimensione 2: rappresenta i diversi giorni.
- Ogni elemento del tensore è una tupla di
(temperature, humidity)
.
Obiettivo
- Calcolare la temperatura media per ciascuna città su tutti i giorni.
- Calcolare il valore massimo di umidità registrato tra tutte le città per ciascun giorno.
Nota
In questo tensore, il primo numero di ogni tupla rappresenta la temperatura (in gradi Celsius) e il secondo numero rappresenta l'umidità (in percentuale) per quel giorno e città.
Soluzione
Grazie per i tuoi commenti!
single