Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Basisbewerkingen: Rekenkundig | Tensoren
Introductie tot TensorFlow

bookBasisbewerkingen: Rekenkundig

Rekenkundige bewerkingen

TensorFlow biedt talrijke rekenkundige bewerkingen voor het manipuleren van tensors. Deze bewerkingen en vele andere in TensorFlow ondersteunen broadcasting, waardoor het eenvoudiger wordt om elementgewijze bewerkingen uit te voeren op tensors met verschillende vormen.

Optelling

Voor het optellen van tensors kunnen we de methoden tf.add(), .assign_add() en het plusteken + gebruiken. Ook kunnen we broadcasting toepassen met het plusteken + of met de methode tf.add().

Broadcasting maakt het mogelijk om elementgewijze bewerkingen uit te voeren op tensors met verschillende, maar compatibele, vormen door de kleinere tensor virtueel uit te breiden tot de vorm van de grotere 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
Opmerking

Voor de inplace-methode moet het fundamentele element een mutabel Variable type zijn in plaats van een constante.

Aftrekken

Er zijn analoge methoden voor aftrekken zoals voor optellen:

  • tf.add() wordt tf.subtract();
  • Plusteken + wordt minteken -;
  • .assign_add() wordt .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

Vermenigvuldiging (Elementgewijs)

Voor vermenigvuldiging bestaat er geen inplace-methode, aangezien matrixvermenigvuldiging altijd resulteert in een nieuw object. Andere bewerkingen hebben echter wel hun tegenhangers:

  • tf.add() komt overeen met tf.multiply();
  • Het plusteken + komt overeen met het sterretje *.
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

Deling

Vergelijkbaar met vermenigvuldiging, maar met tf.divide() en het /-teken.

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 is de term die wordt gebruikt om te beschrijven hoe tensors met verschillende vormen automatisch en impliciet worden behandeld tijdens rekenkundige bewerkingen, zodat ze lijken alsof ze dezelfde vorm hebben. Hierdoor kunnen bewerkingen worden uitgevoerd op tensors van verschillende groottes zonder deze eerst expliciet te hoeven aanpassen.

Note
Meer Bestuderen

Voor een diepgaander begrip van broadcasting kun je de officiële NumPy documentatiepagina over dit onderwerp raadplegen.

Taak

Swipe to start coding

Gegeven een reeks matrices, voer de volgende bewerkingen uit:

  1. In-place optelling van een 2x2-matrix.
  2. Aftrekking met behulp van de tf.subtract()-methode voor een 2x3-matrix.
  3. Broadcasting vermenigvuldiging van een 3x2-matrix met een andere 1x2-matrix.
  4. Broadcasting deling tussen twee matrices, één van formaat 2x3 en de andere 2x1.

Opmerking

Let op het broadcasting-gedrag bij de vermenigvuldigings- en delingsbewerkingen. Bij vermenigvuldiging is het vergelijkbaar met het vermenigvuldigen van [[1, 2], [3, 4], [5, 6]] met [[2, 4], [2, 4], [2, 4]]. Bij deling is het vergelijkbaar met het delen van [[2, 4, 6], [4, 8, 12]] door [[2, 2, 2], [4, 4, 4]].

In het eerste geval breidt broadcasting de matrix uit langs de 0e as (eerste parameter van de shape), terwijl in het tweede geval de matrix wordt uitgebreid langs de 1e as (tweede parameter van de shape). Dit hangt af van de vorm van de matrices.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 8
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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

bookBasisbewerkingen: Rekenkundig

Veeg om het menu te tonen

Rekenkundige bewerkingen

TensorFlow biedt talrijke rekenkundige bewerkingen voor het manipuleren van tensors. Deze bewerkingen en vele andere in TensorFlow ondersteunen broadcasting, waardoor het eenvoudiger wordt om elementgewijze bewerkingen uit te voeren op tensors met verschillende vormen.

Optelling

Voor het optellen van tensors kunnen we de methoden tf.add(), .assign_add() en het plusteken + gebruiken. Ook kunnen we broadcasting toepassen met het plusteken + of met de methode tf.add().

Broadcasting maakt het mogelijk om elementgewijze bewerkingen uit te voeren op tensors met verschillende, maar compatibele, vormen door de kleinere tensor virtueel uit te breiden tot de vorm van de grotere 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
Opmerking

Voor de inplace-methode moet het fundamentele element een mutabel Variable type zijn in plaats van een constante.

Aftrekken

Er zijn analoge methoden voor aftrekken zoals voor optellen:

  • tf.add() wordt tf.subtract();
  • Plusteken + wordt minteken -;
  • .assign_add() wordt .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

Vermenigvuldiging (Elementgewijs)

Voor vermenigvuldiging bestaat er geen inplace-methode, aangezien matrixvermenigvuldiging altijd resulteert in een nieuw object. Andere bewerkingen hebben echter wel hun tegenhangers:

  • tf.add() komt overeen met tf.multiply();
  • Het plusteken + komt overeen met het sterretje *.
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

Deling

Vergelijkbaar met vermenigvuldiging, maar met tf.divide() en het /-teken.

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 is de term die wordt gebruikt om te beschrijven hoe tensors met verschillende vormen automatisch en impliciet worden behandeld tijdens rekenkundige bewerkingen, zodat ze lijken alsof ze dezelfde vorm hebben. Hierdoor kunnen bewerkingen worden uitgevoerd op tensors van verschillende groottes zonder deze eerst expliciet te hoeven aanpassen.

Note
Meer Bestuderen

Voor een diepgaander begrip van broadcasting kun je de officiële NumPy documentatiepagina over dit onderwerp raadplegen.

Taak

Swipe to start coding

Gegeven een reeks matrices, voer de volgende bewerkingen uit:

  1. In-place optelling van een 2x2-matrix.
  2. Aftrekking met behulp van de tf.subtract()-methode voor een 2x3-matrix.
  3. Broadcasting vermenigvuldiging van een 3x2-matrix met een andere 1x2-matrix.
  4. Broadcasting deling tussen twee matrices, één van formaat 2x3 en de andere 2x1.

Opmerking

Let op het broadcasting-gedrag bij de vermenigvuldigings- en delingsbewerkingen. Bij vermenigvuldiging is het vergelijkbaar met het vermenigvuldigen van [[1, 2], [3, 4], [5, 6]] met [[2, 4], [2, 4], [2, 4]]. Bij deling is het vergelijkbaar met het delen van [[2, 4, 6], [4, 8, 12]] door [[2, 2, 2], [4, 4, 4]].

In het eerste geval breidt broadcasting de matrix uit langs de 0e as (eerste parameter van de shape), terwijl in het tweede geval de matrix wordt uitgebreid langs de 1e as (tweede parameter van de shape). Dit hangt af van de vorm van de matrices.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 8
single

single

some-alt