Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Operazioni di Base: Aritmetica | Tensori
Introduzione a TensorFlow

bookOperazioni di Base: Aritmetica

Operazioni aritmetiche

TensorFlow offre numerose operazioni aritmetiche per la manipolazione dei tensori. Queste operazioni, insieme a molte altre in TensorFlow, supportano il broadcasting, facilitando l'esecuzione di operazioni elemento per elemento su tensori di forme diverse.

Addizione

Per l'addizione tra tensori si possono utilizzare i metodi tf.add(), .assign_add() e il segno più +. È inoltre possibile utilizzare il broadcasting sia con il segno più + sia con il metodo tf.add().

Il broadcasting consente di eseguire operazioni elemento per elemento su tensori di forme diverse ma compatibili, espandendo virtualmente il tensore più piccolo per adattarlo alla forma di quello più grande.

12345678910111213141516171819202122232425
import tensorflow as tf # Create two tensors a = tf.Variable([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise addition with TF method c1 = tf.add(a, b) # Same as `c1` calculation, but shorter c2 = a + b # Using broadcasting; # Same as `[1, 2, 3] + [3, 3, 3]` c3 = a + 3 # The most efficient one; # Changes the object inplace without creating a new one; # Result is the same as for `c1` and `c2`. a.assign_add(b) print('TF method:\t', c1) print('Plus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
copy
Note
Nota

Per il metodo inplace, l'elemento fondamentale deve essere un tipo Variable mutabile anziché una costante.

Sottrazione

Sono disponibili analoghi di tutti i metodi per la sottrazione come per l'addizione:

  • tf.add() diventa tf.subtract();
  • Il segno più + diventa il segno meno -;
  • .assign_add() diventa .assign_sub().
123456789101112131415161718192021
import tensorflow as tf # Create two tensors a = tf.Variable([4, 5, 6]) b = tf.constant([1, 2, 3]) # Perform element-wise substraction c1 = tf.subtract(a, b) c2 = a - b # Using broadcasting; # Same as `[4, 5, 6] - [3, 3, 3]` c3 = a - 3 # Inplace substraction a.assign_sub(b) print('TF method:\t', c1) print('Minus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
copy

Moltiplicazione (Elemento per elemento)

Per la moltiplicazione, non esiste un metodo inplace poiché la moltiplicazione di matrici produce intrinsecamente un nuovo oggetto. Tuttavia, altre operazioni hanno i loro corrispettivi:

  • tf.add() corrisponde a tf.multiply();
  • Il segno più + corrisponde al segno asterisco *.
1234567891011121314151617
import tensorflow as tf # Create two tensors a = tf.constant([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise multiplication c1 = tf.multiply(a, b) c2 = a * b # Using broadcasting; # Same as `[1, 2, 3] * [3, 3, 3]` c3 = a * 3 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
copy

Divisione

Simile alla moltiplicazione, ma con tf.divide() e il segno /.

1234567891011121314151617
import tensorflow as tf # Create two tensors a = tf.constant([6, 8, 10]) b = tf.constant([2, 4, 5]) # Perform element-wise division c1 = tf.divide(a, b) c2 = a / b # Using broadcasting; # Same as `[6, 8, 10] / [2, 2, 2]` c3 = a / 2 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
copy

Broadcasting

Broadcasting è il termine utilizzato per descrivere come i tensori con forme diverse vengono automaticamente e implicitamente trattati durante le operazioni aritmetiche affinché appaiano come se avessero la stessa forma. Consente di eseguire operazioni su tensori di dimensioni differenti senza doverli ridimensionare esplicitamente prima.

Note
Approfondisci

Per una comprensione più approfondita del broadcasting, puoi consultare la pagina della documentazione NumPy su questo argomento.

Compito

Swipe to start coding

Dato un insieme di matrici, eseguire le seguenti operazioni:

  1. Addizione in-place di una matrice 2x2.
  2. Sottrazione utilizzando il metodo tf.subtract() per una matrice 2x3.
  3. Moltiplicazione con broadcasting di una matrice 3x2 con un'altra matrice 1x2.
  4. Divisione con broadcasting tra due matrici, una di dimensione 2x3 e l'altra 2x1.

Nota

Prestare attenzione al comportamento del broadcasting nelle operazioni di moltiplicazione e divisione. Nella moltiplicazione, è come moltiplicare [[1, 2], [3, 4], [5, 6]] con [[2, 4], [2, 4], [2, 4]]. Nella divisione, è come dividere [[2, 4, 6], [4, 8, 12]] per [[2, 2, 2], [4, 4, 4]].

Nel primo caso, il broadcasting espande la matrice lungo il primo asse (primo parametro della forma), mentre nel secondo caso la matrice viene espansa lungo il secondo asse (secondo parametro della forma). Dipende dalla forma delle matrici.

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 8
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

close

Awesome!

Completion rate improved to 5.56

bookOperazioni di Base: Aritmetica

Scorri per mostrare il menu

Operazioni aritmetiche

TensorFlow offre numerose operazioni aritmetiche per la manipolazione dei tensori. Queste operazioni, insieme a molte altre in TensorFlow, supportano il broadcasting, facilitando l'esecuzione di operazioni elemento per elemento su tensori di forme diverse.

Addizione

Per l'addizione tra tensori si possono utilizzare i metodi tf.add(), .assign_add() e il segno più +. È inoltre possibile utilizzare il broadcasting sia con il segno più + sia con il metodo tf.add().

Il broadcasting consente di eseguire operazioni elemento per elemento su tensori di forme diverse ma compatibili, espandendo virtualmente il tensore più piccolo per adattarlo alla forma di quello più grande.

12345678910111213141516171819202122232425
import tensorflow as tf # Create two tensors a = tf.Variable([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise addition with TF method c1 = tf.add(a, b) # Same as `c1` calculation, but shorter c2 = a + b # Using broadcasting; # Same as `[1, 2, 3] + [3, 3, 3]` c3 = a + 3 # The most efficient one; # Changes the object inplace without creating a new one; # Result is the same as for `c1` and `c2`. a.assign_add(b) print('TF method:\t', c1) print('Plus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
copy
Note
Nota

Per il metodo inplace, l'elemento fondamentale deve essere un tipo Variable mutabile anziché una costante.

Sottrazione

Sono disponibili analoghi di tutti i metodi per la sottrazione come per l'addizione:

  • tf.add() diventa tf.subtract();
  • Il segno più + diventa il segno meno -;
  • .assign_add() diventa .assign_sub().
123456789101112131415161718192021
import tensorflow as tf # Create two tensors a = tf.Variable([4, 5, 6]) b = tf.constant([1, 2, 3]) # Perform element-wise substraction c1 = tf.subtract(a, b) c2 = a - b # Using broadcasting; # Same as `[4, 5, 6] - [3, 3, 3]` c3 = a - 3 # Inplace substraction a.assign_sub(b) print('TF method:\t', c1) print('Minus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
copy

Moltiplicazione (Elemento per elemento)

Per la moltiplicazione, non esiste un metodo inplace poiché la moltiplicazione di matrici produce intrinsecamente un nuovo oggetto. Tuttavia, altre operazioni hanno i loro corrispettivi:

  • tf.add() corrisponde a tf.multiply();
  • Il segno più + corrisponde al segno asterisco *.
1234567891011121314151617
import tensorflow as tf # Create two tensors a = tf.constant([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise multiplication c1 = tf.multiply(a, b) c2 = a * b # Using broadcasting; # Same as `[1, 2, 3] * [3, 3, 3]` c3 = a * 3 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
copy

Divisione

Simile alla moltiplicazione, ma con tf.divide() e il segno /.

1234567891011121314151617
import tensorflow as tf # Create two tensors a = tf.constant([6, 8, 10]) b = tf.constant([2, 4, 5]) # Perform element-wise division c1 = tf.divide(a, b) c2 = a / b # Using broadcasting; # Same as `[6, 8, 10] / [2, 2, 2]` c3 = a / 2 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
copy

Broadcasting

Broadcasting è il termine utilizzato per descrivere come i tensori con forme diverse vengono automaticamente e implicitamente trattati durante le operazioni aritmetiche affinché appaiano come se avessero la stessa forma. Consente di eseguire operazioni su tensori di dimensioni differenti senza doverli ridimensionare esplicitamente prima.

Note
Approfondisci

Per una comprensione più approfondita del broadcasting, puoi consultare la pagina della documentazione NumPy su questo argomento.

Compito

Swipe to start coding

Dato un insieme di matrici, eseguire le seguenti operazioni:

  1. Addizione in-place di una matrice 2x2.
  2. Sottrazione utilizzando il metodo tf.subtract() per una matrice 2x3.
  3. Moltiplicazione con broadcasting di una matrice 3x2 con un'altra matrice 1x2.
  4. Divisione con broadcasting tra due matrici, una di dimensione 2x3 e l'altra 2x1.

Nota

Prestare attenzione al comportamento del broadcasting nelle operazioni di moltiplicazione e divisione. Nella moltiplicazione, è come moltiplicare [[1, 2], [3, 4], [5, 6]] con [[2, 4], [2, 4], [2, 4]]. Nella divisione, è come dividere [[2, 4, 6], [4, 8, 12]] per [[2, 2, 2], [4, 4, 4]].

Nel primo caso, il broadcasting espande la matrice lungo il primo asse (primo parametro della forma), mentre nel secondo caso la matrice viene espansa lungo il secondo asse (secondo parametro della forma). Dipende dalla forma delle matrici.

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 1. Capitolo 8
single

single

some-alt