Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Grundläggande Operationer: Aritmetik | Tensorer
Introduktion till Tensorflow

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

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
Observera

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 till tf.subtract();
  • Plustecknet + ändras till minustecknet -;
  • .assign_add() ändras till .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)

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() motsvarar tf.multiply();
  • Plustecknet + motsvarar asterisktecknet *.
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

Liknande multiplikation, men med tf.divide() och /-tecken.

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

Note
Läs mer

För en djupare förståelse av broadcasting kan du läsa den officiella NumPy-dokumentationssidan om detta ämne.

Uppgift

Swipe to start coding

Givet ett antal matriser, utför följande operationer:

  1. In-place addition av en 2x2-matris.
  2. Subtraktion med hjälp av metoden tf.subtract() för en 2x3-matris.
  3. Broadcasting-multiplikation av en 3x2-matris med en annan 1x2-matris.
  4. 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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 8
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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

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
Observera

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 till tf.subtract();
  • Plustecknet + ändras till minustecknet -;
  • .assign_add() ändras till .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)

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() motsvarar tf.multiply();
  • Plustecknet + motsvarar asterisktecknet *.
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

Liknande multiplikation, men med tf.divide() och /-tecken.

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

Note
Läs mer

För en djupare förståelse av broadcasting kan du läsa den officiella NumPy-dokumentationssidan om detta ämne.

Uppgift

Swipe to start coding

Givet ett antal matriser, utför följande operationer:

  1. In-place addition av en 2x2-matris.
  2. Subtraktion med hjälp av metoden tf.subtract() för en 2x3-matris.
  3. Broadcasting-multiplikation av en 3x2-matris med en annan 1x2-matris.
  4. 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

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 8
single

single

some-alt