Grundläggande Operationer: Aritmetik
Aritmetiska operationer
TensorFlow tillhandahåller många aritmetiska operationer för tensorhantering. Dessa operationer och många andra i TensorFlow stöder broadcasting, vilket gör det enklare att utföra elementvisa operationer på tensorer med olika former.
Addition
För addition av tensorer kan vi använda metoderna tf.add()
, .assign_add()
samt plustecknet +
. Vi kan även använda broadcasting med plustecknet +
eller med metoden tf.add()
.
Broadcasting möjliggör elementvisa operationer på tensorer med olika, men kompatibla, former genom att virtuellt expandera den mindre tensorn så att den matchar formen på den större tensorn.
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)
För inplace-metoden måste det grundläggande elementet vara av typen muterbar Variable
och inte en konstant.
Subtraktion
Vi har motsvarigheter för alla metoder för subtraktion som för addition:
tf.add()
ändras tilltf.subtract()
;- Plustecknet
+
ändras till minustecknet-
; .assign_add()
ändras till.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)
Multiplikation (Elementvis)
För multiplikation finns det ingen in-place-metod eftersom matrismultiplikation i sig resulterar i ett nytt objekt. Andra operationer har dock motsvarande metoder:
tf.add()
motsvarartf.multiply()
;- Plustecknet
+
motsvarar asterisktecknet*
.
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)
Division
Liknande multiplikation, men med tf.divide()
och /
-tecken.
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 är termen som används för att beskriva hur tensorer med olika former automatiskt och implicit hanteras under aritmetiska operationer så att de verkar ha samma form. Det möjliggör operationer på tensorer av olika storlekar utan att de först behöver omformas explicit.
För en djupare förståelse av broadcasting kan du läsa den officiella NumPy-dokumentationssidan om detta ämne.
Swipe to start coding
Givet ett antal matriser, utför följande operationer:
- In-place addition av en 2x2-matris.
- Subtraktion med hjälp av metoden
tf.subtract()
för en 2x3-matris. - Broadcasting-multiplikation av en 3x2-matris med en annan 1x2-matris.
- Broadcasting-division mellan två matriser, en med storlek 2x3 och den andra 2x1.
Observera
Notera broadcasting-beteendet vid multiplikations- och divisionsoperationerna. Vid multiplikation är det som att multiplicera
[[1, 2], [3, 4], [5, 6]]
med[[2, 4], [2, 4], [2, 4]]
. Vid division är det som att dividera[[2, 4, 6], [4, 8, 12]]
med[[2, 2, 2], [4, 4, 4]]
.I det första fallet expanderar broadcasting matrisen längs 0:e axeln (första parametern i shape), medan i det andra fallet expanderas matrisen längs 1:a axeln (andra parametern i shape). Det beror på matrisernas form.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain more about how broadcasting works in TensorFlow?
What are some common errors when using arithmetic operations with tensors?
Can you show examples of broadcasting with tensors of different shapes?
Awesome!
Completion rate improved to 5.56
Grundläggande Operationer: Aritmetik
Svep för att visa menyn
Aritmetiska operationer
TensorFlow tillhandahåller många aritmetiska operationer för tensorhantering. Dessa operationer och många andra i TensorFlow stöder broadcasting, vilket gör det enklare att utföra elementvisa operationer på tensorer med olika former.
Addition
För addition av tensorer kan vi använda metoderna tf.add()
, .assign_add()
samt plustecknet +
. Vi kan även använda broadcasting med plustecknet +
eller med metoden tf.add()
.
Broadcasting möjliggör elementvisa operationer på tensorer med olika, men kompatibla, former genom att virtuellt expandera den mindre tensorn så att den matchar formen på den större tensorn.
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)
För inplace-metoden måste det grundläggande elementet vara av typen muterbar Variable
och inte en konstant.
Subtraktion
Vi har motsvarigheter för alla metoder för subtraktion som för addition:
tf.add()
ändras tilltf.subtract()
;- Plustecknet
+
ändras till minustecknet-
; .assign_add()
ändras till.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)
Multiplikation (Elementvis)
För multiplikation finns det ingen in-place-metod eftersom matrismultiplikation i sig resulterar i ett nytt objekt. Andra operationer har dock motsvarande metoder:
tf.add()
motsvarartf.multiply()
;- Plustecknet
+
motsvarar asterisktecknet*
.
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)
Division
Liknande multiplikation, men med tf.divide()
och /
-tecken.
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 är termen som används för att beskriva hur tensorer med olika former automatiskt och implicit hanteras under aritmetiska operationer så att de verkar ha samma form. Det möjliggör operationer på tensorer av olika storlekar utan att de först behöver omformas explicit.
För en djupare förståelse av broadcasting kan du läsa den officiella NumPy-dokumentationssidan om detta ämne.
Swipe to start coding
Givet ett antal matriser, utför följande operationer:
- In-place addition av en 2x2-matris.
- Subtraktion med hjälp av metoden
tf.subtract()
för en 2x3-matris. - Broadcasting-multiplikation av en 3x2-matris med en annan 1x2-matris.
- Broadcasting-division mellan två matriser, en med storlek 2x3 och den andra 2x1.
Observera
Notera broadcasting-beteendet vid multiplikations- och divisionsoperationerna. Vid multiplikation är det som att multiplicera
[[1, 2], [3, 4], [5, 6]]
med[[2, 4], [2, 4], [2, 4]]
. Vid division är det som att dividera[[2, 4, 6], [4, 8, 12]]
med[[2, 2, 2], [4, 4, 4]]
.I det första fallet expanderar broadcasting matrisen längs 0:e axeln (första parametern i shape), medan i det andra fallet expanderas matrisen längs 1:a axeln (andra parametern i shape). Det beror på matrisernas form.
Lösning
Tack för dina kommentarer!
single