Muunnokset
Tensorimuunnokset
Tässä luvussa käsitellään tensorien muuntamisen edistyneitä operaatioita.
Tensorimuunnokset ovat olennaisia datan käsittelyssä. Syventyessäsi syväoppimiseen ja datatieteeseen, 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
Tensorien kanssa työskennellessä on tilanteita, joissa täytyy muuttaa muotoa muuttamatta taustalla olevaa dataa. 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;
- Operaatio täyttää uuden muodon riveittäin (vasemmalta oikealle, ylhäältä alas).
1234567891011121314import 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)
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
Viipalointi auttaa hakemaan osan tensorista. Se on verrattavissa Pythonin listojen viipalointiin, mutta laajennettuna moniulotteisille tensoreille.
Toimintaperiaate:
tf.slice()
poimii viipaleen tensorista. Se vaatii viipaleen aloitusindeksin ja viipaleen koon;- Jos koko on
-1
, se tarkoittaa kaikkia alkioita kyseisessä ulottuvuudessa.
12345678910111213import 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)
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 voit valita tiettyjä rivejä, sarakkeita tai tensorin alkioita; - Kun käytät
tf.Variable()
, tensorista tulee muokattava, jolloin voit tehdä suoria muutoksia viipaloinnin avulla; - Muokataksesi valitun alatensorin arvoja, käytä
.assign()
-metodia tensorilla tai listalla, jonka muoto vastaa alatensorin muotoa.
12345678910111213import 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)
- TensorFlow:n viipalointisyntaksi perustuu suurelta osin NumPyn syntaksiin, joten jos olet perehtynyt NumPyyn, siirtyminen TensorFlow'n viipalointimekanismiin on suoraviivaista;
- Käytä aina
tf.Variable()
-funktiota kaikissa 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 akseli1
viittaa sarakkeisiin (vaakasuunnassa).
123456789101112131415161718import 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)
- Varmista, että yhdistettävillä tensoreilla on yhteensopivat dimensiot muilla kuin yhdistettävillä akseleilla;
- Tämä operaatio muistuttaa
numpy.concatenate()
-funktiota, mutta on suunniteltu erityisesti TensorFlow-tensoreille.
Swipe to start coding
Taustatiedot
Työskentelet aineiston parissa, joka koostuu eri maantieteellisissä sijainneissa olevien 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 mittauksia muilta antureilta, jotka tulee sisällyttää aineistoon.
Aineiston tiedot
-
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 (Celsiusasteina);
- Ilmanpaine (hPa);
- Normalisoitu leveysasteen koordinaatti;
- Normalisoitu pituusasteen koordinaatti.
-
error_correction_data
: Tenso, jonka muoto on(2, 4)
ja joka sisältää 2 korjattua mittausta virheellisten tietojen tilalle pääaineistossa. -
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:
-
Tietojen korjaus:
- Havaitsit, että
main_dataset
-tietojoukon 2. ja 5. rivin mittaukset olivat virheellisiä. Korvaa nämä rivitmain_dataset
-tietojoukossaerror_correction_data
-tietojoukon riveillä.
- Havaitsit, että
-
Lisätietojen sisällyttäminen:
- Yhdistä
main_dataset
jaadditional_data
lisäämällä uudet mittaukset aineistoon.
- Yhdistä
-
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ä.
- Eräopetusta varten haluat jakaa aineiston eriin, joissa on 3 mittausta per erä. Muotoile
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain more about how tf.reshape() works?
What happens if I try to reshape a tensor to an incompatible shape?
Can you give more examples of slicing and modifying tensors?
Awesome!
Completion rate improved to 5.56
Muunnokset
Pyyhkäise näyttääksesi valikon
Tensorimuunnokset
Tässä luvussa käsitellään tensorien muuntamisen edistyneitä operaatioita.
Tensorimuunnokset ovat olennaisia datan käsittelyssä. Syventyessäsi syväoppimiseen ja datatieteeseen, 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
Tensorien kanssa työskennellessä on tilanteita, joissa täytyy muuttaa muotoa muuttamatta taustalla olevaa dataa. 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;
- Operaatio täyttää uuden muodon riveittäin (vasemmalta oikealle, ylhäältä alas).
1234567891011121314import 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)
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
Viipalointi auttaa hakemaan osan tensorista. Se on verrattavissa Pythonin listojen viipalointiin, mutta laajennettuna moniulotteisille tensoreille.
Toimintaperiaate:
tf.slice()
poimii viipaleen tensorista. Se vaatii viipaleen aloitusindeksin ja viipaleen koon;- Jos koko on
-1
, se tarkoittaa kaikkia alkioita kyseisessä ulottuvuudessa.
12345678910111213import 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)
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 voit valita tiettyjä rivejä, sarakkeita tai tensorin alkioita; - Kun käytät
tf.Variable()
, tensorista tulee muokattava, jolloin voit tehdä suoria muutoksia viipaloinnin avulla; - Muokataksesi valitun alatensorin arvoja, käytä
.assign()
-metodia tensorilla tai listalla, jonka muoto vastaa alatensorin muotoa.
12345678910111213import 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)
- TensorFlow:n viipalointisyntaksi perustuu suurelta osin NumPyn syntaksiin, joten jos olet perehtynyt NumPyyn, siirtyminen TensorFlow'n viipalointimekanismiin on suoraviivaista;
- Käytä aina
tf.Variable()
-funktiota kaikissa 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 akseli1
viittaa sarakkeisiin (vaakasuunnassa).
123456789101112131415161718import 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)
- Varmista, että yhdistettävillä tensoreilla on yhteensopivat dimensiot muilla kuin yhdistettävillä akseleilla;
- Tämä operaatio muistuttaa
numpy.concatenate()
-funktiota, mutta on suunniteltu erityisesti TensorFlow-tensoreille.
Swipe to start coding
Taustatiedot
Työskentelet aineiston parissa, joka koostuu eri maantieteellisissä sijainneissa olevien 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 mittauksia muilta antureilta, jotka tulee sisällyttää aineistoon.
Aineiston tiedot
-
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 (Celsiusasteina);
- Ilmanpaine (hPa);
- Normalisoitu leveysasteen koordinaatti;
- Normalisoitu pituusasteen koordinaatti.
-
error_correction_data
: Tenso, jonka muoto on(2, 4)
ja joka sisältää 2 korjattua mittausta virheellisten tietojen tilalle pääaineistossa. -
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:
-
Tietojen korjaus:
- Havaitsit, että
main_dataset
-tietojoukon 2. ja 5. rivin mittaukset olivat virheellisiä. Korvaa nämä rivitmain_dataset
-tietojoukossaerror_correction_data
-tietojoukon riveillä.
- Havaitsit, että
-
Lisätietojen sisällyttäminen:
- Yhdistä
main_dataset
jaadditional_data
lisäämällä uudet mittaukset aineistoon.
- Yhdistä
-
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ä.
- Eräopetusta varten haluat jakaa aineiston eriin, joissa on 3 mittausta per erä. Muotoile
Ratkaisu
Kiitos palautteestasi!
single