Basisbewerkingen: 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.
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)
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()
wordttf.subtract()
;- Plusteken
+
wordt minteken-
; .assign_add()
wordt.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)
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 mettf.multiply()
;- Het plusteken
+
komt overeen met het sterretje*
.
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)
Deling
Vergelijkbaar met vermenigvuldiging, maar met tf.divide()
en het /
-teken.
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 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.
Voor een diepgaander begrip van broadcasting kun je de officiële NumPy documentatiepagina over dit onderwerp raadplegen.
Swipe to start coding
Gegeven een reeks matrices, voer de volgende bewerkingen uit:
- In-place optelling van een 2x2-matrix.
- Aftrekking met behulp van de
tf.subtract()
-methode voor een 2x3-matrix. - Broadcasting vermenigvuldiging van een 3x2-matrix met een andere 1x2-matrix.
- 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
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Basisbewerkingen: 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.
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)
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()
wordttf.subtract()
;- Plusteken
+
wordt minteken-
; .assign_add()
wordt.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)
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 mettf.multiply()
;- Het plusteken
+
komt overeen met het sterretje*
.
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)
Deling
Vergelijkbaar met vermenigvuldiging, maar met tf.divide()
en het /
-teken.
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 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.
Voor een diepgaander begrip van broadcasting kun je de officiële NumPy documentatiepagina over dit onderwerp raadplegen.
Swipe to start coding
Gegeven een reeks matrices, voer de volgende bewerkingen uit:
- In-place optelling van een 2x2-matrix.
- Aftrekking met behulp van de
tf.subtract()
-methode voor een 2x3-matrix. - Broadcasting vermenigvuldiging van een 3x2-matrix met een andere 1x2-matrix.
- 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
Bedankt voor je feedback!
single