Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Transformasjoner | Tensores
Introduksjon til TensorFlow

bookTransformasjoner

Tensortransformasjoner

Denne leksjonen tar for seg avanserte operasjoner for transformasjon av tensorer.

Tensortransformasjoner er avgjørende ved håndtering av data. Etter hvert som man går dypere inn i oppgaver innen dyp læring og datavitenskap, blir det tydelig at dataene man møter ikke alltid har ønsket format. Denne leksjonen introduserer metoder i TensorFlow som muliggjør manipulering av struktur og innhold i tensorer for å oppfylle spesifikke krav.

Omforming av tensorer

Ved arbeid med tensorer vil det noen ganger være nødvendig å endre formen uten å endre det underliggende innholdet. tf.reshape() er nyttig i slike situasjoner.

Slik fungerer det:

  • Omforming endrer tensorens struktur, men ikke dataene. Totalt antall elementer før og etter omformingen må være det samme;
  • Operasjonen "fyller" den nye formen radvis (fra venstre til høyre, ovenfra og ned).
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
Merk

Når du angir den nye formen, kan én dimensjon være -1. TensorFlow vil beregne størrelsen på denne dimensjonen slik at den totale størrelsen forblir konstant.

Dette er spesielt nyttig når du skal mate tensorer inn i et nevralt nettverk, men dimensjonene ikke samsvarer med nettverkets inndataform.

Slicing

Slicing hjelper deg med å hente ut en del av en tensor. Det tilsvarer Python sin liste-slicing, men utvidet til flerdimensjonale tensorer.

Slik fungerer det:

  • tf.slice() henter ut en del av en tensor. Den krever startindeks for slicing og størrelsen på delen;
  • Hvis størrelsen er -1, betyr det alle elementene i den dimensjonen.
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
Merk

Husk alltid på nullindeksering i TensorFlow, som ligner på Pythons egen indeksering. Nyttig for å hente ut spesifikke egenskaper eller datapunkter fra et større datasett.

Endring av data

Det finnes en annen måte å slice på som også lar deg endre de opprinnelige dataene, tilsvarende slicing av arrays i NumPy.

Slik fungerer det:

  • Ved å bruke [] kan du enkelt slice og indeksere tensorer, på samme måte som NumPy-slicing. Denne metoden lar deg velge bestemte rader, kolonner eller elementer i en tensor;
  • Med tf.Variable() blir tensoren muterbar, slik at du kan gjøre direkte endringer ved hjelp av slicing;
  • For å endre verdiene i den valgte subtensoren, bruk .assign()-metoden med en tensor eller liste som har samme form.
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
Merk
  • Syntaksen for slicing i TensorFlow er i stor grad inspirert av NumPy, så dersom du er kjent med NumPy, er overgangen til TensorFlows slicing-mekanisme enkel;
  • Sørg alltid for å bruke tf.Variable() for operasjoner som krever at tensorn kan endres.

Sammenkobling

Sammenkobling gjør det mulig å slå sammen flere tensorer langs en spesifisert akse.

Slik fungerer det:

  • tf.concat() kombinerer tensorer. Metoden krever en liste med tensorer som skal sammenkobles og aksen operasjonen skal utføres langs;
  • Aksen er nullindeksert. En akse på 0 refererer til rader (vertikalt) og en akse på 1 refererer til kolonner (horisontalt).
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
Merk
  • Sørg for at tensorene du slår sammen har samsvarende dimensjoner på de ikke-konkatenert aksene;
  • Denne operasjonen ligner på numpy.concatenate(), men er tilpasset TensorFlow-tensorer.
Oppgave

Swipe to start coding

Bakgrunn

Du arbeider med et datasett bestående av målinger fra ulike sensorer plassert på forskjellige geografiske steder. Disse sensorene registrerer værrelaterte data som temperatur, trykk og normaliserte geografiske koordinater.

Under sammenstillingen av målingene oppdaget du at noen av dataene har blitt registrert feil.

Du har også mottatt nye målinger fra andre sensorer som må inkluderes.

Informasjon om datasettet

  1. main_dataset: En tensor med form (6, 4) som representerer 6 målinger. Hver rad er en prøve, og kolonnene representerer følgende egenskaper:

    • Temperatur (i Celsius);
    • Trykk (i hPa);
    • Normalisert breddegrad;
    • Normalisert lengdegrad.
  2. error_correction_data: En tensor med form (2, 4) som representerer 2 korrigerte målinger for feilaktige data i hoveddatasettet.

  3. additional_data: En tensor med form (3, 4) som representerer 3 nye målinger.

Mål

Forbered et korrigert og komplett datasett for værvarsling:

  1. Datakorrigering:

    • Du har funnet ut at målingene på 2. og 5. rad i main_dataset var unøyaktige. Erstatt disse radene i main_dataset med radene fra error_correction_data.
  2. Inkluder tilleggsdata:

    • Slå sammen main_dataset med additional_data for å inkludere de nye målingene.
  3. Batch-omforming:

    • For batch-trening ønsker du å dele datasettet inn i batcher med 3 målinger per batch. Omform complete_dataset, der første dimensjon representerer batch-størrelsen, og andre dimensjon representerer antall målinger per batch.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 11
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

close

Awesome!

Completion rate improved to 5.56

bookTransformasjoner

Sveip for å vise menyen

Tensortransformasjoner

Denne leksjonen tar for seg avanserte operasjoner for transformasjon av tensorer.

Tensortransformasjoner er avgjørende ved håndtering av data. Etter hvert som man går dypere inn i oppgaver innen dyp læring og datavitenskap, blir det tydelig at dataene man møter ikke alltid har ønsket format. Denne leksjonen introduserer metoder i TensorFlow som muliggjør manipulering av struktur og innhold i tensorer for å oppfylle spesifikke krav.

Omforming av tensorer

Ved arbeid med tensorer vil det noen ganger være nødvendig å endre formen uten å endre det underliggende innholdet. tf.reshape() er nyttig i slike situasjoner.

Slik fungerer det:

  • Omforming endrer tensorens struktur, men ikke dataene. Totalt antall elementer før og etter omformingen må være det samme;
  • Operasjonen "fyller" den nye formen radvis (fra venstre til høyre, ovenfra og ned).
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
Merk

Når du angir den nye formen, kan én dimensjon være -1. TensorFlow vil beregne størrelsen på denne dimensjonen slik at den totale størrelsen forblir konstant.

Dette er spesielt nyttig når du skal mate tensorer inn i et nevralt nettverk, men dimensjonene ikke samsvarer med nettverkets inndataform.

Slicing

Slicing hjelper deg med å hente ut en del av en tensor. Det tilsvarer Python sin liste-slicing, men utvidet til flerdimensjonale tensorer.

Slik fungerer det:

  • tf.slice() henter ut en del av en tensor. Den krever startindeks for slicing og størrelsen på delen;
  • Hvis størrelsen er -1, betyr det alle elementene i den dimensjonen.
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
Merk

Husk alltid på nullindeksering i TensorFlow, som ligner på Pythons egen indeksering. Nyttig for å hente ut spesifikke egenskaper eller datapunkter fra et større datasett.

Endring av data

Det finnes en annen måte å slice på som også lar deg endre de opprinnelige dataene, tilsvarende slicing av arrays i NumPy.

Slik fungerer det:

  • Ved å bruke [] kan du enkelt slice og indeksere tensorer, på samme måte som NumPy-slicing. Denne metoden lar deg velge bestemte rader, kolonner eller elementer i en tensor;
  • Med tf.Variable() blir tensoren muterbar, slik at du kan gjøre direkte endringer ved hjelp av slicing;
  • For å endre verdiene i den valgte subtensoren, bruk .assign()-metoden med en tensor eller liste som har samme form.
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
Merk
  • Syntaksen for slicing i TensorFlow er i stor grad inspirert av NumPy, så dersom du er kjent med NumPy, er overgangen til TensorFlows slicing-mekanisme enkel;
  • Sørg alltid for å bruke tf.Variable() for operasjoner som krever at tensorn kan endres.

Sammenkobling

Sammenkobling gjør det mulig å slå sammen flere tensorer langs en spesifisert akse.

Slik fungerer det:

  • tf.concat() kombinerer tensorer. Metoden krever en liste med tensorer som skal sammenkobles og aksen operasjonen skal utføres langs;
  • Aksen er nullindeksert. En akse på 0 refererer til rader (vertikalt) og en akse på 1 refererer til kolonner (horisontalt).
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
Merk
  • Sørg for at tensorene du slår sammen har samsvarende dimensjoner på de ikke-konkatenert aksene;
  • Denne operasjonen ligner på numpy.concatenate(), men er tilpasset TensorFlow-tensorer.
Oppgave

Swipe to start coding

Bakgrunn

Du arbeider med et datasett bestående av målinger fra ulike sensorer plassert på forskjellige geografiske steder. Disse sensorene registrerer værrelaterte data som temperatur, trykk og normaliserte geografiske koordinater.

Under sammenstillingen av målingene oppdaget du at noen av dataene har blitt registrert feil.

Du har også mottatt nye målinger fra andre sensorer som må inkluderes.

Informasjon om datasettet

  1. main_dataset: En tensor med form (6, 4) som representerer 6 målinger. Hver rad er en prøve, og kolonnene representerer følgende egenskaper:

    • Temperatur (i Celsius);
    • Trykk (i hPa);
    • Normalisert breddegrad;
    • Normalisert lengdegrad.
  2. error_correction_data: En tensor med form (2, 4) som representerer 2 korrigerte målinger for feilaktige data i hoveddatasettet.

  3. additional_data: En tensor med form (3, 4) som representerer 3 nye målinger.

Mål

Forbered et korrigert og komplett datasett for værvarsling:

  1. Datakorrigering:

    • Du har funnet ut at målingene på 2. og 5. rad i main_dataset var unøyaktige. Erstatt disse radene i main_dataset med radene fra error_correction_data.
  2. Inkluder tilleggsdata:

    • Slå sammen main_dataset med additional_data for å inkludere de nye målingene.
  3. Batch-omforming:

    • For batch-trening ønsker du å dele datasettet inn i batcher med 3 målinger per batch. Omform complete_dataset, der første dimensjon representerer batch-størrelsen, og andre dimensjon representerer antall målinger per batch.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 11
single

single

some-alt