Perusoperaatiot: Aritmeettiset
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()
-metodeja sekä plus-merkkiä +
. Lisäksi lähetysominaisuutta voidaan hyödyntää sekä plus-merkin +
että tf.add()
-funktion kanssa.
Lähetysominaisuus mahdollistaa alkiokohtaisten operaatioiden suorittamisen tensoreille, joilla on eri mutta yhteensopivat muodot, laajentamalla pienemmän tensorin virtuaalisesti vastaamaan suuremman tensorin muotoa.
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)
Inplace-menetelmää käytettäessä peruselementin on oltava muutettavissa oleva Variable
-tyyppi eikä vakio.
Vähennyslasku
Kaikille vähennyslaskun menetelmille on vastaavat analogiat kuten yhteenlaskussa:
tf.add()
muuttuu muotoontf.subtract()
;- Plusmerkki
+
muuttuu miinusmerkiksi-
; .assign_add()
muuttuu muotoon.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)
Kertolasku (alkioittain)
Kertolaskulle ei ole olemassa inplace-menetelmää, koska matriisikertolasku tuottaa aina uuden olion. Muille operaatioille on kuitenkin vastineensa:
tf.add()
vastaatf.multiply()
;- Plus-merkki
+
vastaa tähteä*
.
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)
Jakolasku
Samanlainen kuin kertolasku, mutta käytetään tf.divide()
ja /
-merkkiä.
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)
Lähetyssääntö (Broadcasting)
Lähetyssääntö (broadcasting) kuvaa, miten erimuotoisia tensoreita käsitellään automaattisesti ja implisiittisesti aritmeettisissa operaatioissa niin, että ne näyttävät olevan samanmuotoisia. Tämä mahdollistaa operaatioiden suorittamisen erikokoisille tensoreille ilman, että niitä tarvitsee erikseen muokata saman kokoisiksi.
Syvempää ymmärrystä lähetyssäännöstä varten voit tutustua viralliseen NumPy-dokumentaatiosivuun tästä aiheesta.
Swipe to start coding
Annettujen matriisien joukolla suoritetaan seuraavat operaatiot:
- In-place-lisäys 2x2-matriisille.
- Vähennyslasku käyttäen
tf.subtract()
-metodia 2x3-matriisille. - Broadcasting-kertolasku 3x2-matriisin ja toisen 1x2-matriisin välillä.
- Broadcasting-jakolasku kahden matriisin välillä, joista toinen on kooltaan 2x3 ja toinen 2x1.
Huom
Huomioi broadcasting-käyttäytyminen kertolasku- ja jakolaskuoperaatioissa. Kertolaskussa kyse on esimerkiksi
[[1, 2], [3, 4], [5, 6]]
kertomisesta[[2, 4], [2, 4], [2, 4]]
kanssa. Jakolaskussa kyse on esimerkiksi[[2, 4, 6], [4, 8, 12]]
jakamisesta[[2, 2, 2], [4, 4, 4]]
kanssa.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
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 5.56
Perusoperaatiot: Aritmeettiset
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()
-metodeja sekä plus-merkkiä +
. Lisäksi lähetysominaisuutta voidaan hyödyntää sekä plus-merkin +
että tf.add()
-funktion kanssa.
Lähetysominaisuus mahdollistaa alkiokohtaisten operaatioiden suorittamisen tensoreille, joilla on eri mutta yhteensopivat muodot, laajentamalla pienemmän tensorin virtuaalisesti vastaamaan suuremman tensorin muotoa.
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)
Inplace-menetelmää käytettäessä peruselementin on oltava muutettavissa oleva Variable
-tyyppi eikä vakio.
Vähennyslasku
Kaikille vähennyslaskun menetelmille on vastaavat analogiat kuten yhteenlaskussa:
tf.add()
muuttuu muotoontf.subtract()
;- Plusmerkki
+
muuttuu miinusmerkiksi-
; .assign_add()
muuttuu muotoon.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)
Kertolasku (alkioittain)
Kertolaskulle ei ole olemassa inplace-menetelmää, koska matriisikertolasku tuottaa aina uuden olion. Muille operaatioille on kuitenkin vastineensa:
tf.add()
vastaatf.multiply()
;- Plus-merkki
+
vastaa tähteä*
.
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)
Jakolasku
Samanlainen kuin kertolasku, mutta käytetään tf.divide()
ja /
-merkkiä.
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)
Lähetyssääntö (Broadcasting)
Lähetyssääntö (broadcasting) kuvaa, miten erimuotoisia tensoreita käsitellään automaattisesti ja implisiittisesti aritmeettisissa operaatioissa niin, että ne näyttävät olevan samanmuotoisia. Tämä mahdollistaa operaatioiden suorittamisen erikokoisille tensoreille ilman, että niitä tarvitsee erikseen muokata saman kokoisiksi.
Syvempää ymmärrystä lähetyssäännöstä varten voit tutustua viralliseen NumPy-dokumentaatiosivuun tästä aiheesta.
Swipe to start coding
Annettujen matriisien joukolla suoritetaan seuraavat operaatiot:
- In-place-lisäys 2x2-matriisille.
- Vähennyslasku käyttäen
tf.subtract()
-metodia 2x3-matriisille. - Broadcasting-kertolasku 3x2-matriisin ja toisen 1x2-matriisin välillä.
- Broadcasting-jakolasku kahden matriisin välillä, joista toinen on kooltaan 2x3 ja toinen 2x1.
Huom
Huomioi broadcasting-käyttäytyminen kertolasku- ja jakolaskuoperaatioissa. Kertolaskussa kyse on esimerkiksi
[[1, 2], [3, 4], [5, 6]]
kertomisesta[[2, 4], [2, 4], [2, 4]]
kanssa. Jakolaskussa kyse on esimerkiksi[[2, 4, 6], [4, 8, 12]]
jakamisesta[[2, 2, 2], [4, 4, 4]]
kanssa.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
Kiitos palautteestasi!
single