Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Grundlæggende Operationer: Aritmetik | Tensorer
Introduktion til Tensorflow

bookGrundlæ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.

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
Bemærk

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 til tf.subtract();
  • Plustegnet + ændres til minustegnet -;
  • .assign_add() ændres til .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

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 til tf.multiply();
  • Plustegnet + svarer til stjerne-tegnet *.
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

Division

Tilsvarende som ved multiplikation, men med tf.divide() og /-tegnet.

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 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.

Note
Læs Mere

For en dybere forståelse af broadcasting kan du henvise til den officielle NumPy-dokumentationsside om dette emne.

Opgave

Swipe to start coding

Givet et sæt matricer, udfør følgende operationer:

  1. In-place addition af en 2x2 matrix.
  2. Subtraktion ved brug af tf.subtract()-metoden for en 2x3 matrix.
  3. Broadcasting-multiplikation af en 3x2 matrix med en anden 1x2 matrix.
  4. 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

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 8
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 5.56

bookGrundlæ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.

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
Bemærk

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 til tf.subtract();
  • Plustegnet + ændres til minustegnet -;
  • .assign_add() ændres til .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

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 til tf.multiply();
  • Plustegnet + svarer til stjerne-tegnet *.
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

Division

Tilsvarende som ved multiplikation, men med tf.divide() og /-tegnet.

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 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.

Note
Læs Mere

For en dybere forståelse af broadcasting kan du henvise til den officielle NumPy-dokumentationsside om dette emne.

Opgave

Swipe to start coding

Givet et sæt matricer, udfør følgende operationer:

  1. In-place addition af en 2x2 matrix.
  2. Subtraktion ved brug af tf.subtract()-metoden for en 2x3 matrix.
  3. Broadcasting-multiplikation af en 3x2 matrix med en anden 1x2 matrix.
  4. 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

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 8
single

single

some-alt