Grundlæggende Operationer: Aritmetik
Aritmetiske operationer
TensorFlow tilbyder adskillige aritmetiske operationer til manipulation af tensorer. Disse operationer og mange andre i TensorFlow understøtter broadcasting, hvilket gør det lettere at udføre elementvise operationer på tensorer med forskellige former.
Addition
Til addition af tensorer kan vi bruge metoderne tf.add()
, .assign_add()
samt plustegnet +
. Vi kan også anvende broadcasting med plustegnet +
eller med metoden tf.add()
.
Broadcasting muliggør elementvise operationer på tensorer med forskellige, men kompatible, former ved virtuelt at udvide den mindre tensor, så den matcher formen på den større tensor.
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)
For inplace-metoden skal det grundlæggende element være af typen muterbar Variable
og ikke en konstant.
Subtraktion
Vi har analoge metoder for subtraktion som for addition:
tf.add()
ændres tiltf.subtract()
;- Plustegnet
+
ændres til minustegnet-
; .assign_add()
ændres til.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)
Ved multiplikation findes der ikke en inplace-metode, da matrixmultiplikation i sagens natur resulterer i et nyt objekt. Andre operationer har dog deres modstykker:
tf.add()
svarer tiltf.multiply()
;- Plustegnet
+
svarer til stjerne-tegnet*
.
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
Tilsvarende som ved multiplikation, men med tf.divide()
og /
-tegnet.
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 er betegnelsen for, hvordan tensorer med forskellige former automatisk og implicit behandles under aritmetiske operationer, så de fremstår, som om de har samme form. Det muliggør operationer på tensorer af forskellige størrelser uden eksplicit først at skulle ændre deres størrelse.
For en dybere forståelse af broadcasting kan du henvise til den officielle NumPy-dokumentationsside om dette emne.
Swipe to start coding
Givet et sæt matricer, udfør følgende operationer:
- In-place addition af en 2x2 matrix.
- Subtraktion ved brug af
tf.subtract()
-metoden for en 2x3 matrix. - Broadcasting-multiplikation af en 3x2 matrix med en anden 1x2 matrix.
- Broadcasting-division mellem to matricer, hvor den ene har størrelsen 2x3 og den anden 2x1.
Bemærk
Bemærk broadcasting-adfærden i multiplikations- og divisionsoperationerne. Ved multiplikation svarer det til at multiplicere
[[1, 2], [3, 4], [5, 6]]
med[[2, 4], [2, 4], [2, 4]]
. Ved division svarer det til at dividere[[2, 4, 6], [4, 8, 12]]
med[[2, 2, 2], [4, 4, 4]]
.I det første tilfælde udvides matrixen via 0. akse (første parameter i shape), mens matrixen i det andet tilfælde udvides via 1. akse (anden parameter i shape). Det afhænger af matricernes form.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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æggende Operationer: Aritmetik
Stryg for at vise menuen
Aritmetiske operationer
TensorFlow tilbyder adskillige aritmetiske operationer til manipulation af tensorer. Disse operationer og mange andre i TensorFlow understøtter broadcasting, hvilket gør det lettere at udføre elementvise operationer på tensorer med forskellige former.
Addition
Til addition af tensorer kan vi bruge metoderne tf.add()
, .assign_add()
samt plustegnet +
. Vi kan også anvende broadcasting med plustegnet +
eller med metoden tf.add()
.
Broadcasting muliggør elementvise operationer på tensorer med forskellige, men kompatible, former ved virtuelt at udvide den mindre tensor, så den matcher formen på den større tensor.
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)
For inplace-metoden skal det grundlæggende element være af typen muterbar Variable
og ikke en konstant.
Subtraktion
Vi har analoge metoder for subtraktion som for addition:
tf.add()
ændres tiltf.subtract()
;- Plustegnet
+
ændres til minustegnet-
; .assign_add()
ændres til.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)
Ved multiplikation findes der ikke en inplace-metode, da matrixmultiplikation i sagens natur resulterer i et nyt objekt. Andre operationer har dog deres modstykker:
tf.add()
svarer tiltf.multiply()
;- Plustegnet
+
svarer til stjerne-tegnet*
.
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
Tilsvarende som ved multiplikation, men med tf.divide()
og /
-tegnet.
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 er betegnelsen for, hvordan tensorer med forskellige former automatisk og implicit behandles under aritmetiske operationer, så de fremstår, som om de har samme form. Det muliggør operationer på tensorer af forskellige størrelser uden eksplicit først at skulle ændre deres størrelse.
For en dybere forståelse af broadcasting kan du henvise til den officielle NumPy-dokumentationsside om dette emne.
Swipe to start coding
Givet et sæt matricer, udfør følgende operationer:
- In-place addition af en 2x2 matrix.
- Subtraktion ved brug af
tf.subtract()
-metoden for en 2x3 matrix. - Broadcasting-multiplikation af en 3x2 matrix med en anden 1x2 matrix.
- Broadcasting-division mellem to matricer, hvor den ene har størrelsen 2x3 og den anden 2x1.
Bemærk
Bemærk broadcasting-adfærden i multiplikations- og divisionsoperationerne. Ved multiplikation svarer det til at multiplicere
[[1, 2], [3, 4], [5, 6]]
med[[2, 4], [2, 4], [2, 4]]
. Ved division svarer det til at dividere[[2, 4, 6], [4, 8, 12]]
med[[2, 2, 2], [4, 4, 4]]
.I det første tilfælde udvides matrixen via 0. akse (første parameter i shape), mens matrixen i det andet tilfælde udvides via 1. akse (anden parameter i shape). Det afhænger af matricernes form.
Løsning
Tak for dine kommentarer!
single