Aritmetik
Aritmetiska operationer
TensorFlow tillhandahåller många aritmetiska operationer för tensor-manipulationer. 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 tf.add(), .assign_add()-metoder och plustecknet +. Vi kan också använda broadcasting med plustecknet + eller med metoden tf.add().
Broadcasting gör det möjligt att utföra 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 den direkta metoden måste det grundläggande elementet vara av typen muterbar Variable och inte en konstant.
Subtraktion
Det finns motsvarigheter för alla metoder för subtraktion som för addition:
tf.add()ändras tilltf.subtract();- Plustecken
+ändras till minustecken-; .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 alltid 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 först behöva ändra deras storlek explicit.
För en djupare förståelse av broadcasting kan du läsa den officiella NumPy-dokumentationssidan om detta ämne.
Tack för dina kommentarer!
single
Aritmetik
Svep för att visa menyn
Aritmetiska operationer
TensorFlow tillhandahåller många aritmetiska operationer för tensor-manipulationer. 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 tf.add(), .assign_add()-metoder och plustecknet +. Vi kan också använda broadcasting med plustecknet + eller med metoden tf.add().
Broadcasting gör det möjligt att utföra 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 den direkta metoden måste det grundläggande elementet vara av typen muterbar Variable och inte en konstant.
Subtraktion
Det finns motsvarigheter för alla metoder för subtraktion som för addition:
tf.add()ändras tilltf.subtract();- Plustecken
+ändras till minustecken-; .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 alltid 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 först behöva ändra deras storlek explicit.
För en djupare förståelse av broadcasting kan du läsa den officiella NumPy-dokumentationssidan om detta ämne.
Svep för att börja koda
Givet en uppsättning 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
Observera broadcasting-beteendet i 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 expanderas matrisen via 0:e axeln (första parametern i shape), medan i det andra fallet expanderas matrisen via 1:a axeln (andra parametern i shape). Det beror på matrisernas shape.
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