Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Operazioni di Riduzione | Tensor Operations and Execution
Introduzione a TensorFlow
Sezione 2. Capitolo 4
single

single

bookOperazioni 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 per ogni 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(): trova il valore minimo nel tensore.
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
Note
Nota

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 (risultando in un vettore colonna);
  • axis=1: esegue l'operazione lungo le colonne (risultando in un vettore riga);
  • È possibile ridurre su più assi contemporaneamente fornendo una lista al parametro axis;
  • Quando il rango del tensore viene ridotto, è possibile utilizzare keepdims=True per mantenere la dimensione ridotta come 1.

Per un tensore 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
Note
Nota

Quando si esegue un'operazione di riduzione lungo un asse specifico, si elimina essenzialmente quell'asse dal tensore, aggregando tutti i tensori all'interno di quell'asse elemento per elemento. Lo stesso effetto si mantiene per qualsiasi numero di dimensioni.

Ecco come appare per un tensore 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
Note
Nota

Molte altre operazioni di riduzione esistono in TensorFlow, ma si basano sugli stessi principi.

Compito

Scorri per iniziare a programmare

Contesto

Sei un data scientist presso un'agenzia di ricerca meteorologica. Ti è stato fornito un tensore contenente le rilevazioni meteorologiche di varie città su 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

  1. Calcolare la temperatura media per ciascuna città su tutti i giorni.
  2. Calcolare il valore massimo di umidità 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

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 4
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

some-alt