Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Aritmeettiset | Tensor Operations and Execution
Quizzes & Challenges
Quizzes
Challenges
/
Johdanto TensorFlow'hun

bookAritmeettiset

Aritmeettiset operaatiot

TensorFlow tarjoaa useita aritmeettisia operaatioita tensorien käsittelyyn. Nämä operaatiot sekä monet muut TensorFlow:ssa tukevat lähetysominaisuutta (broadcasting), mikä helpottaa alkiokohtaisten operaatioiden suorittamista erimuotoisille tensoreille.

Yhteenlasku

Tensorien yhteenlaskuun voidaan käyttää tf.add(), .assign_add() -menetelmiä sekä plus-merkkiä +. Lisäksi lähetysominaisuutta voidaan hyödyntää sekä plus-merkin + että tf.add() -menetelmän kanssa.

Lähetysominaisuus mahdollistaa alkiokohtaisten operaatioiden suorittamisen tensoreille, joilla on eri mutta yhteensopivat muodot, laajentamalla pienemmän tensorin virtuaalisesti vastaamaan suuremman tensorin muotoa.

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
Huomio

Paikallaan tapahtuvaa menetelmää varten peruselementin on oltava muokattavissa oleva Variable-tyyppi eikä vakio.

Vähennyslasku

Kaikille vähennyslaskun menetelmille on vastaavat analogiat kuten yhteenlaskussa:

  • tf.add() muuttuu muotoon tf.subtract();
  • Plus-merkki + muuttuu miinusmerkiksi -;
  • .assign_add() muuttuu muotoon .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

Kertolasku (alkioittain)

Kertolaskulle ei ole olemassa paikan päällä suoritettavaa metodia, koska matriisikertolasku tuottaa aina uuden olion. Muille operaatioille on kuitenkin vastineensa:

  • tf.add() vastaa tf.multiply();
  • Plusmerkki + vastaa tähteä *.
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

Jakolasku

Samanlainen kuin kertolasku, mutta käytetään tf.divide() ja /-merkkiä.

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

Lähetyssääntö (Broadcasting)

Lähetyssääntö (broadcasting) tarkoittaa sitä, miten erimuotoisia tensoreita käsitellään automaattisesti ja implisiittisesti aritmeettisissa operaatioissa niin, että ne näyttävät olevan samanmuotoisia. Tämän ansiosta voidaan suorittaa operaatioita erikokoisille tensoreille ilman, että niitä tarvitsee erikseen muokata saman kokoisiksi.

Note
Lisätietoa

Syvempää ymmärrystä lähetyssäännöstä varten voit tutustua viralliseen NumPy-dokumentaatiosivuun tästä aiheesta.

Tehtävä

Swipe to start coding

Annettujen matriisien joukolle suoritetaan seuraavat operaatiot:

  1. Paikallinen yhteenlasku 2x2-matriisille.
  2. Vähennyslasku käyttäen tf.subtract()-metodia 2x3-matriisille.
  3. Broadcastattu kertolasku 3x2-matriisin ja toisen 1x2-matriisin välillä.
  4. Broadcastattu jakolasku kahden matriisin välillä, joista toinen on kooltaan 2x3 ja toinen 2x1.

Huom

Kiinnitä huomiota broadcasting-käyttäytymiseen kertolasku- ja jakolaskuoperaatioissa. Kertolaskussa kyse on esimerkiksi matriisin [[1, 2], [3, 4], [5, 6]] kertomisesta matriisilla [[2, 4], [2, 4], [2, 4]]. Jakolaskussa kyse on matriisin [[2, 4, 6], [4, 8, 12]] jakamisesta matriisilla [[2, 2, 2], [4, 4, 4]].

Ensimmäisessä tapauksessa broadcasting laajentaa matriisia 0-akselin (muodon ensimmäinen parametri) suuntaan, kun taas toisessa tapauksessa matriisi laajennetaan 1-akselin (muodon toinen parametri) suuntaan. Tämä riippuu matriisien muodoista.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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 higher-dimensional tensors?

close

Awesome!

Completion rate improved to 6.25

bookAritmeettiset

Pyyhkäise näyttääksesi valikon

Aritmeettiset operaatiot

TensorFlow tarjoaa useita aritmeettisia operaatioita tensorien käsittelyyn. Nämä operaatiot sekä monet muut TensorFlow:ssa tukevat lähetysominaisuutta (broadcasting), mikä helpottaa alkiokohtaisten operaatioiden suorittamista erimuotoisille tensoreille.

Yhteenlasku

Tensorien yhteenlaskuun voidaan käyttää tf.add(), .assign_add() -menetelmiä sekä plus-merkkiä +. Lisäksi lähetysominaisuutta voidaan hyödyntää sekä plus-merkin + että tf.add() -menetelmän kanssa.

Lähetysominaisuus mahdollistaa alkiokohtaisten operaatioiden suorittamisen tensoreille, joilla on eri mutta yhteensopivat muodot, laajentamalla pienemmän tensorin virtuaalisesti vastaamaan suuremman tensorin muotoa.

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
Huomio

Paikallaan tapahtuvaa menetelmää varten peruselementin on oltava muokattavissa oleva Variable-tyyppi eikä vakio.

Vähennyslasku

Kaikille vähennyslaskun menetelmille on vastaavat analogiat kuten yhteenlaskussa:

  • tf.add() muuttuu muotoon tf.subtract();
  • Plus-merkki + muuttuu miinusmerkiksi -;
  • .assign_add() muuttuu muotoon .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

Kertolasku (alkioittain)

Kertolaskulle ei ole olemassa paikan päällä suoritettavaa metodia, koska matriisikertolasku tuottaa aina uuden olion. Muille operaatioille on kuitenkin vastineensa:

  • tf.add() vastaa tf.multiply();
  • Plusmerkki + vastaa tähteä *.
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

Jakolasku

Samanlainen kuin kertolasku, mutta käytetään tf.divide() ja /-merkkiä.

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

Lähetyssääntö (Broadcasting)

Lähetyssääntö (broadcasting) tarkoittaa sitä, miten erimuotoisia tensoreita käsitellään automaattisesti ja implisiittisesti aritmeettisissa operaatioissa niin, että ne näyttävät olevan samanmuotoisia. Tämän ansiosta voidaan suorittaa operaatioita erikokoisille tensoreille ilman, että niitä tarvitsee erikseen muokata saman kokoisiksi.

Note
Lisätietoa

Syvempää ymmärrystä lähetyssäännöstä varten voit tutustua viralliseen NumPy-dokumentaatiosivuun tästä aiheesta.

Tehtävä

Swipe to start coding

Annettujen matriisien joukolle suoritetaan seuraavat operaatiot:

  1. Paikallinen yhteenlasku 2x2-matriisille.
  2. Vähennyslasku käyttäen tf.subtract()-metodia 2x3-matriisille.
  3. Broadcastattu kertolasku 3x2-matriisin ja toisen 1x2-matriisin välillä.
  4. Broadcastattu jakolasku kahden matriisin välillä, joista toinen on kooltaan 2x3 ja toinen 2x1.

Huom

Kiinnitä huomiota broadcasting-käyttäytymiseen kertolasku- ja jakolaskuoperaatioissa. Kertolaskussa kyse on esimerkiksi matriisin [[1, 2], [3, 4], [5, 6]] kertomisesta matriisilla [[2, 4], [2, 4], [2, 4]]. Jakolaskussa kyse on matriisin [[2, 4, 6], [4, 8, 12]] jakamisesta matriisilla [[2, 2, 2], [4, 4, 4]].

Ensimmäisessä tapauksessa broadcasting laajentaa matriisia 0-akselin (muodon ensimmäinen parametri) suuntaan, kun taas toisessa tapauksessa matriisi laajennetaan 1-akselin (muodon toinen parametri) suuntaan. Tämä riippuu matriisien muodoista.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1
single

single

some-alt