Transformasjoner
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).
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)
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.
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)
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.
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)
- 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).
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)
- 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.
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
-
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.
-
error_correction_data
: En tensor med form(2, 4)
som representerer 2 korrigerte målinger for feilaktige data i hoveddatasettet. -
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:
-
Datakorrigering:
- Du har funnet ut at målingene på 2. og 5. rad i
main_dataset
var unøyaktige. Erstatt disse radene imain_dataset
med radene fraerror_correction_data
.
- Du har funnet ut at målingene på 2. og 5. rad i
-
Inkluder tilleggsdata:
- Slå sammen
main_dataset
medadditional_data
for å inkludere de nye målingene.
- Slå sammen
-
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.
- For batch-trening ønsker du å dele datasettet inn i batcher med 3 målinger per batch. Omform
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 5.56
Transformasjoner
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).
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)
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.
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)
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.
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)
- 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).
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)
- 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.
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
-
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.
-
error_correction_data
: En tensor med form(2, 4)
som representerer 2 korrigerte målinger for feilaktige data i hoveddatasettet. -
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:
-
Datakorrigering:
- Du har funnet ut at målingene på 2. og 5. rad i
main_dataset
var unøyaktige. Erstatt disse radene imain_dataset
med radene fraerror_correction_data
.
- Du har funnet ut at målingene på 2. og 5. rad i
-
Inkluder tilleggsdata:
- Slå sammen
main_dataset
medadditional_data
for å inkludere de nye målingene.
- Slå sammen
-
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.
- For batch-trening ønsker du å dele datasettet inn i batcher med 3 målinger per batch. Omform
Løsning
Takk for tilbakemeldingene dine!
single