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

bookMuunnokset

Tensorimuunnokset

Tässä luvussa käsitellään edistyneitä tensorien muunnostoimintoja.

Tensorimuunnokset ovat olennaisia tietoa käsiteltäessä. Syventyessäsi syväoppimiseen ja data-analytiikkaan, huomaat nopeasti, että data ei aina ole halutussa muodossa. Tässä luvussa esitellään TensorFlow'n menetelmiä, joiden avulla voidaan muokata tensorien rakennetta ja sisältöä vastaamaan erityisiä vaatimuksia.

Tensorien uudelleenmuotoilu

Työskennellessäsi tensorien kanssa, on tilanteita, joissa täytyy muuttaa muotoa ilman, että itse data muuttuu. tf.reshape() on hyödyllinen tällaisissa tilanteissa.

Toimintaperiaate:

  • Uudelleenmuotoilu muuttaa tensorin rakennetta, mutta ei sen dataa. Alkioiden kokonaismäärän ennen ja jälkeen uudelleenmuotoilun täytyy pysyä samana;
  • Toiminto täyttää uuden muodon riveittäin (vasemmalta oikealle, ylhäältä alas).
1234567891011121314
import tensorflow as tf # Create a tensor with shape (3, 2) tensor = tf.constant([[1, 2], [3, 4], [5, 6]]) # Reshape the tensor to shape (2, 3) reshaped_tensor = tf.reshape(tensor, (2, 3)) print(reshaped_tensor) print('-' * 50) # Reshape the tensor to shape (6, 1); # The size of the first dimention is determined automatically reshaped_tensor = tf.reshape(tensor, (-1, 1)) print(reshaped_tensor)
copy
Note
Huomio

Kun määrität uuden muodon, yksi ulottuvuus voi olla -1. TensorFlow laskee tämän ulottuvuuden koon niin, että kokonaiskoko pysyy samana.

Tämä on erityisen hyödyllistä, kun haluat syöttää tensoreita neuroverkkoon, mutta ulottuvuudet eivät vastaa verkon syötteen muotoa.

Viipalointi

Viipaloinnin avulla voit hakea osan tensorista. Se vastaa Pythonin listojen viipalointia, mutta toimii monidimensioisille tensoreille.

Toimintaperiaate:

  • tf.slice() poimii viipaleen tensorista. Se vaatii viipaleen aloitusindeksin ja viipaleen koon;
  • Jos koko on -1, se tarkoittaa kaikkia alkioita kyseisessä ulottuvuudessa.
12345678910111213
import tensorflow as tf # Create a tensor tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Slice tensor to extract sub-tensor from index (0, 1) of size (1, 2) sliced_tensor = tf.slice(tensor, begin=(0, 1), size=(1, 2)) print(sliced_tensor) print('-' * 50) # Slice tensor to extract sub-tensor from index (1, 0) of size (2, 2) sliced_tensor = tf.slice(tensor, (1, 0), (2, 2)) print(sliced_tensor)
copy
Note
Huomio

Muista aina TensorFlown nollapohjainen indeksointi, joka on samanlainen kuin Pythonin oma indeksointi. Hyödyllinen tiettyjen ominaisuuksien tai datapisteiden poimimiseen suuremmasta tietojoukosta.

Datan muokkaaminen

On olemassa toinen viipalointitapa, joka mahdollistaa myös alkuperäisen datan muokkaamisen, vastaavasti kuin NumPyn taulukoiden viipalointi.

Toimintaperiaate:

  • Käyttämällä [] voit helposti viipaloida ja indeksoida tensoreita, samoin kuin NumPyssa. Tällä tavalla voidaan valita tiettyjä rivejä, sarakkeita tai tensorin alkioita;
  • Kun käytetään tf.Variable(), tensorista tulee muokattava, jolloin suorat muutokset viipaloinnin avulla ovat mahdollisia;
  • Valitun alatensorin arvoja voidaan muuttaa käyttämällä .assign()-metodia tensorilla tai listalla, jonka muoto vastaa alatensorin muotoa.
12345678910111213
import tensorflow as tf # Create a mutable tensor tensor = tf.Variable([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Change the entire first row tensor[0, :].assign([0, 0, 0]) print(tensor) print('-' * 80) # Modify the second and the third columns tensor[:, 1:3].assign(tf.fill((3,2), 1)) print(tensor)
copy
Note
Huomio
  • TensorFlow'n viipalointisyntaksi pohjautuu suurelta osin NumPyyn, joten jos tunnet NumPyn, siirtyminen TensorFlow'n viipalointimekanismiin on suoraviivaista;
  • Käytä aina tf.Variable()-funktiota operaatioissa, jotka vaativat tensorin muokattavuutta.

Yhdistäminen (Concatenating)

Yhdistäminen mahdollistaa useiden tensorien liittämisen yhteen määritellyn akselin mukaan.

Toimintaperiaate:

  • tf.concat() yhdistää tensorit. Menetelmä vaatii listan tensoreista, jotka haluat yhdistää, sekä akselin, jonka mukaan operaatio suoritetaan;
  • Akseli on nollapohjainen. Akseli 0 viittaa riveihin (pystysuunnassa) ja akseli 1 viittaa sarakkeisiin (vaakasuunnassa).
123456789101112131415161718
import tensorflow as tf # Create two tensors tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]]) tensor2 = tf.constant([[7, 8, 9]]) # Concatenate tensors vertically (along rows) concatenated_tensor = tf.concat([tensor1, tensor2], axis=0) print(concatenated_tensor) print('-' * 50) # Create another set of tensors tensor3 = tf.constant([[1, 2], [4, 5]]) tensor4 = tf.constant([[3], [6]]) # Concatenate tensors horizontally (along columns) concatenated_tensor = tf.concat([tensor3, tensor4], axis=1) print(concatenated_tensor)
copy
Note
Huomio
  • Varmista, että yhdistettävillä tensoreilla on yhteensopivat dimensiot muilla kuin liitettävillä akseleilla;
  • Tämä operaatio muistuttaa numpy.concatenate()-funktiota, mutta on suunniteltu TensorFlow-tensoreille.
Tehtävä

Swipe to start coding

Taustatiedot

Työskentelet aineiston parissa, joka koostuu eri maantieteellisille alueille sijoitettujen antureiden mittauksista. Nämä anturit tallentavat säähän liittyviä tietoja, kuten lämpötilaa, ilmanpainetta ja normalisoituja maantieteellisiä koordinaatteja.

Kuitenkin havaitsit, että osa tiedoista on tallennettu virheellisesti.

Lisäksi olet saanut uusia mittaustuloksia muilta antureilta, jotka tulee sisällyttää aineistoon.

Aineiston tiedot

  1. main_dataset: Tenso, jonka muoto on (6, 4) ja joka sisältää 6 mittausta. Jokainen rivi on näyte, ja sarakkeet kuvaavat seuraavia ominaisuuksia:

    • Lämpötila (Celsius-asteina);
    • Ilmanpaine (hPa);
    • Normalisoitu leveysaste;
    • Normalisoitu pituusaste.
  2. error_correction_data: Tenso, jonka muoto on (2, 4) ja joka sisältää 2 korjattua mittausta virheellisten tietojen tilalle pääaineistossa.

  3. additional_data: Tenso, jonka muoto on (3, 4) ja joka sisältää 3 uutta mittausta.

Tavoite

Valmistele korjattu ja täydellinen aineisto sääennustetta varten muokkaamalla main_dataset.

  1. Tietojen korjaus:

    • Havaitsit, että main_dataset-tietojoukon 2. ja 5. rivin mittaukset olivat virheellisiä. Korvaa nämä rivit error_correction_data -tietojoukon riveillä.
  2. Lisätietojen sisällyttäminen:

    • Yhdistä main_dataset ja additional_data lisäämällä uudet mittaukset aineistoon.
  3. Erien uudelleenmuotoilu:

    • Eräopetusta varten haluat jakaa aineiston eriin, joissa on 3 mittausta per erä. Muotoile complete_dataset siten, että ensimmäinen ulottuvuus kuvaa eräkokoa ja toinen ulottuvuus mittausten määrää per erä.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 3
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

close

Awesome!

Completion rate improved to 6.25

bookMuunnokset

Pyyhkäise näyttääksesi valikon

Tensorimuunnokset

Tässä luvussa käsitellään edistyneitä tensorien muunnostoimintoja.

Tensorimuunnokset ovat olennaisia tietoa käsiteltäessä. Syventyessäsi syväoppimiseen ja data-analytiikkaan, huomaat nopeasti, että data ei aina ole halutussa muodossa. Tässä luvussa esitellään TensorFlow'n menetelmiä, joiden avulla voidaan muokata tensorien rakennetta ja sisältöä vastaamaan erityisiä vaatimuksia.

Tensorien uudelleenmuotoilu

Työskennellessäsi tensorien kanssa, on tilanteita, joissa täytyy muuttaa muotoa ilman, että itse data muuttuu. tf.reshape() on hyödyllinen tällaisissa tilanteissa.

Toimintaperiaate:

  • Uudelleenmuotoilu muuttaa tensorin rakennetta, mutta ei sen dataa. Alkioiden kokonaismäärän ennen ja jälkeen uudelleenmuotoilun täytyy pysyä samana;
  • Toiminto täyttää uuden muodon riveittäin (vasemmalta oikealle, ylhäältä alas).
1234567891011121314
import tensorflow as tf # Create a tensor with shape (3, 2) tensor = tf.constant([[1, 2], [3, 4], [5, 6]]) # Reshape the tensor to shape (2, 3) reshaped_tensor = tf.reshape(tensor, (2, 3)) print(reshaped_tensor) print('-' * 50) # Reshape the tensor to shape (6, 1); # The size of the first dimention is determined automatically reshaped_tensor = tf.reshape(tensor, (-1, 1)) print(reshaped_tensor)
copy
Note
Huomio

Kun määrität uuden muodon, yksi ulottuvuus voi olla -1. TensorFlow laskee tämän ulottuvuuden koon niin, että kokonaiskoko pysyy samana.

Tämä on erityisen hyödyllistä, kun haluat syöttää tensoreita neuroverkkoon, mutta ulottuvuudet eivät vastaa verkon syötteen muotoa.

Viipalointi

Viipaloinnin avulla voit hakea osan tensorista. Se vastaa Pythonin listojen viipalointia, mutta toimii monidimensioisille tensoreille.

Toimintaperiaate:

  • tf.slice() poimii viipaleen tensorista. Se vaatii viipaleen aloitusindeksin ja viipaleen koon;
  • Jos koko on -1, se tarkoittaa kaikkia alkioita kyseisessä ulottuvuudessa.
12345678910111213
import tensorflow as tf # Create a tensor tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Slice tensor to extract sub-tensor from index (0, 1) of size (1, 2) sliced_tensor = tf.slice(tensor, begin=(0, 1), size=(1, 2)) print(sliced_tensor) print('-' * 50) # Slice tensor to extract sub-tensor from index (1, 0) of size (2, 2) sliced_tensor = tf.slice(tensor, (1, 0), (2, 2)) print(sliced_tensor)
copy
Note
Huomio

Muista aina TensorFlown nollapohjainen indeksointi, joka on samanlainen kuin Pythonin oma indeksointi. Hyödyllinen tiettyjen ominaisuuksien tai datapisteiden poimimiseen suuremmasta tietojoukosta.

Datan muokkaaminen

On olemassa toinen viipalointitapa, joka mahdollistaa myös alkuperäisen datan muokkaamisen, vastaavasti kuin NumPyn taulukoiden viipalointi.

Toimintaperiaate:

  • Käyttämällä [] voit helposti viipaloida ja indeksoida tensoreita, samoin kuin NumPyssa. Tällä tavalla voidaan valita tiettyjä rivejä, sarakkeita tai tensorin alkioita;
  • Kun käytetään tf.Variable(), tensorista tulee muokattava, jolloin suorat muutokset viipaloinnin avulla ovat mahdollisia;
  • Valitun alatensorin arvoja voidaan muuttaa käyttämällä .assign()-metodia tensorilla tai listalla, jonka muoto vastaa alatensorin muotoa.
12345678910111213
import tensorflow as tf # Create a mutable tensor tensor = tf.Variable([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Change the entire first row tensor[0, :].assign([0, 0, 0]) print(tensor) print('-' * 80) # Modify the second and the third columns tensor[:, 1:3].assign(tf.fill((3,2), 1)) print(tensor)
copy
Note
Huomio
  • TensorFlow'n viipalointisyntaksi pohjautuu suurelta osin NumPyyn, joten jos tunnet NumPyn, siirtyminen TensorFlow'n viipalointimekanismiin on suoraviivaista;
  • Käytä aina tf.Variable()-funktiota operaatioissa, jotka vaativat tensorin muokattavuutta.

Yhdistäminen (Concatenating)

Yhdistäminen mahdollistaa useiden tensorien liittämisen yhteen määritellyn akselin mukaan.

Toimintaperiaate:

  • tf.concat() yhdistää tensorit. Menetelmä vaatii listan tensoreista, jotka haluat yhdistää, sekä akselin, jonka mukaan operaatio suoritetaan;
  • Akseli on nollapohjainen. Akseli 0 viittaa riveihin (pystysuunnassa) ja akseli 1 viittaa sarakkeisiin (vaakasuunnassa).
123456789101112131415161718
import tensorflow as tf # Create two tensors tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]]) tensor2 = tf.constant([[7, 8, 9]]) # Concatenate tensors vertically (along rows) concatenated_tensor = tf.concat([tensor1, tensor2], axis=0) print(concatenated_tensor) print('-' * 50) # Create another set of tensors tensor3 = tf.constant([[1, 2], [4, 5]]) tensor4 = tf.constant([[3], [6]]) # Concatenate tensors horizontally (along columns) concatenated_tensor = tf.concat([tensor3, tensor4], axis=1) print(concatenated_tensor)
copy
Note
Huomio
  • Varmista, että yhdistettävillä tensoreilla on yhteensopivat dimensiot muilla kuin liitettävillä akseleilla;
  • Tämä operaatio muistuttaa numpy.concatenate()-funktiota, mutta on suunniteltu TensorFlow-tensoreille.
Tehtävä

Swipe to start coding

Taustatiedot

Työskentelet aineiston parissa, joka koostuu eri maantieteellisille alueille sijoitettujen antureiden mittauksista. Nämä anturit tallentavat säähän liittyviä tietoja, kuten lämpötilaa, ilmanpainetta ja normalisoituja maantieteellisiä koordinaatteja.

Kuitenkin havaitsit, että osa tiedoista on tallennettu virheellisesti.

Lisäksi olet saanut uusia mittaustuloksia muilta antureilta, jotka tulee sisällyttää aineistoon.

Aineiston tiedot

  1. main_dataset: Tenso, jonka muoto on (6, 4) ja joka sisältää 6 mittausta. Jokainen rivi on näyte, ja sarakkeet kuvaavat seuraavia ominaisuuksia:

    • Lämpötila (Celsius-asteina);
    • Ilmanpaine (hPa);
    • Normalisoitu leveysaste;
    • Normalisoitu pituusaste.
  2. error_correction_data: Tenso, jonka muoto on (2, 4) ja joka sisältää 2 korjattua mittausta virheellisten tietojen tilalle pääaineistossa.

  3. additional_data: Tenso, jonka muoto on (3, 4) ja joka sisältää 3 uutta mittausta.

Tavoite

Valmistele korjattu ja täydellinen aineisto sääennustetta varten muokkaamalla main_dataset.

  1. Tietojen korjaus:

    • Havaitsit, että main_dataset-tietojoukon 2. ja 5. rivin mittaukset olivat virheellisiä. Korvaa nämä rivit error_correction_data -tietojoukon riveillä.
  2. Lisätietojen sisällyttäminen:

    • Yhdistä main_dataset ja additional_data lisäämällä uudet mittaukset aineistoon.
  3. Erien uudelleenmuotoilu:

    • Eräopetusta varten haluat jakaa aineiston eriin, joissa on 3 mittausta per erä. Muotoile complete_dataset siten, että ensimmäinen ulottuvuus kuvaa eräkokoa ja toinen ulottuvuus mittausten määrää per erä.

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 3
single

single

some-alt