Operazioni 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.
12345678910111213141516171819202122232425import 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)
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()
diventatf.subtract()
;- Il segno più
+
diventa il segno meno-
; .assign_add()
diventa.assign_sub()
.
123456789101112131415161718192021import 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)
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 atf.multiply()
;- Il segno più
+
corrisponde al segno asterisco*
.
1234567891011121314151617import 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)
Divisione
Simile alla moltiplicazione, ma con tf.divide()
e il segno /
.
1234567891011121314151617import 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)
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.
Per una comprensione più approfondita del broadcasting, puoi consultare la pagina della documentazione NumPy su questo argomento.
Swipe to start coding
Dato un insieme di matrici, eseguire le seguenti operazioni:
- Addizione in-place di una matrice 2x2.
- Sottrazione utilizzando il metodo
tf.subtract()
per una matrice 2x3. - Moltiplicazione con broadcasting di una matrice 3x2 con un'altra matrice 1x2.
- 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
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
Awesome!
Completion rate improved to 5.56
Operazioni 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.
12345678910111213141516171819202122232425import 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)
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()
diventatf.subtract()
;- Il segno più
+
diventa il segno meno-
; .assign_add()
diventa.assign_sub()
.
123456789101112131415161718192021import 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)
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 atf.multiply()
;- Il segno più
+
corrisponde al segno asterisco*
.
1234567891011121314151617import 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)
Divisione
Simile alla moltiplicazione, ma con tf.divide()
e il segno /
.
1234567891011121314151617import 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)
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.
Per una comprensione più approfondita del broadcasting, puoi consultare la pagina della documentazione NumPy su questo argomento.
Swipe to start coding
Dato un insieme di matrici, eseguire le seguenti operazioni:
- Addizione in-place di una matrice 2x2.
- Sottrazione utilizzando il metodo
tf.subtract()
per una matrice 2x3. - Moltiplicazione con broadcasting di una matrice 3x2 con un'altra matrice 1x2.
- 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
Grazie per i tuoi commenti!
single