Transformationer
Tensortransformationer
Denne lektion går i dybden med avancerede operationer inden for transformation af tensores.
Tensortransformationer er afgørende ved håndtering af data. Når man arbejder videre med deep learning og datavidenskab, bliver det tydeligt, at de data, man møder, ikke altid har det ønskede format. Denne lektion introducerer metoder i TensorFlow, der muliggør manipulation af struktur og indhold i tensores for at opfylde specifikke krav.
Omformning af tensores
Ved arbejde med tensores opstår der situationer, hvor det er nødvendigt at ændre formen uden at ændre de underliggende data. tf.reshape()
er nyttig i sådanne tilfælde.
Sådan fungerer det:
- Omformning ændrer tensorens struktur, men ikke dens data. Det samlede antal elementer før og efter omformningen skal forblive det samme;
- Funktionen "udfylder" den nye form rækkevis (fra venstre mod højre, oppefra 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 angiver den nye form, kan én dimension være -1
. TensorFlow beregner størrelsen af denne dimension, så den samlede størrelse forbliver konstant.
Dette er særligt nyttigt, når du vil give tensore som input til et neuralt netværk, men dimensionerne ikke matcher netværkets inputform.
Udskæring
Udskæring hjælper dig med at hente en del af en tensor. Det svarer til Python's list slicing, men udvidet til multi-dimensionelle tensore.
Sådan fungerer det:
tf.slice()
udtrækker et udsnit fra en tensor. Den kræver startindekset for udsnittet og størrelsen af udsnittet;- Hvis størrelsen er
-1
, angiver det alle elementer i den dimension.
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 altid nul-baseret indeksering i TensorFlow, hvilket svarer til Pythons egen indeksering. Nyttigt til at udtrække specifikke egenskaber eller datapunkter fra et større datasæt.
Ændring af data
Der findes en anden måde at slice på, som også gør det muligt at ændre de oprindelige data, ligesom ved slicing af arrays i NumPy.
Sådan fungerer det:
- Ved at bruge
[]
kan du nemt slice og indeksere tensores, på samme måde som NumPy slicing. Denne metode gør det muligt at vælge specifikke rækker, kolonner eller elementer i en tensor; - Med
tf.Variable()
bliver tensoren muterbar, hvilket tillader direkte ændringer ved hjælp af slicing; - For at ændre værdierne i den valgte subtensor, anvend
.assign()
-metoden med en tensor eller liste, der matcher dens 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)
- Skæresyntaksen i TensorFlow er i høj grad inspireret af NumPy, så hvis du er bekendt med NumPy, er overgangen til TensorFlows skæremekanisme ligetil;
- Sørg altid for at bruge
tf.Variable()
til operationer, der kræver tensor-mutabilitet.
Sammenkædning
Sammenkædning muliggør sammenføjning af flere tensores langs en specificeret akse.
Sådan fungerer det:
tf.concat()
kombinerer tensores. Metoden kræver en liste af tensores, du ønsker at sammenkæde, samt aksen, hvor operationen skal udføres;- Aksen er nul-baseret. En akse på
0
refererer til rækker (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 de tensorer, du sammenføjer, har matchende dimensioner på de ikke-sammenkædede akser;
- Denne operation ligner
numpy.concatenate()
, men er tilpasset TensorFlow-tensorer.
Swipe to start coding
Baggrund
Du arbejder med et datasæt bestående af målinger fra forskellige sensorer placeret på forskellige geografiske lokationer. Disse sensorer registrerer vejrrelaterede data såsom temperatur, tryk og normaliserede geografiske koordinater.
Dog har du under sammenstillingen af målingerne opdaget, at nogle af dataene er blevet registreret forkert.
Du har også modtaget nye målinger fra andre sensorer, som skal inkluderes.
Datasætinformation
-
main_dataset
: En tensor med formen(6, 4)
, der repræsenterer 6 målinger. Hver række er en prøve, og kolonnerne repræsenterer følgende egenskaber:- Temperature (in Celsius);
- Pressure (in hPa);
- Normalized latitude coordinate;
- Normalized longitude coordinate.
-
error_correction_data
: En tensor med formen(2, 4)
, der repræsenterer 2 korrigerede målinger for fejlagtige data i hoveddatasættet. -
additional_data
: En tensor med formen(3, 4)
, der repræsenterer 3 nye målinger.
Formål
Forbered et korrigeret og komplet datasæt til vejrudsigtsformål:
-
Datakorrigering:
- Du har fundet ud af, at målingerne på 2. og 5. række i
main_dataset
var unøjagtige. Erstat disse rækker imain_dataset
med rækkerne fraerror_correction_data
.
- Du har fundet ud af, at målingerne på 2. og 5. række i
-
Inkludér yderligere data:
- Sammenkæd
main_dataset
medadditional_data
for at inkludere de nye målinger.
- Sammenkæd
-
Batch-omformning:
- Med henblik på batch-træning ønsker du at opdele datasættet i batches med 3 målinger per batch. Omform
complete_dataset
, hvor den første dimension repræsenterer batch-størrelsen, og den anden dimension repræsenterer antallet af målinger per batch.
- Med henblik på batch-træning ønsker du at opdele datasættet i batches med 3 målinger per batch. Omform
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Transformationer
Stryg for at vise menuen
Tensortransformationer
Denne lektion går i dybden med avancerede operationer inden for transformation af tensores.
Tensortransformationer er afgørende ved håndtering af data. Når man arbejder videre med deep learning og datavidenskab, bliver det tydeligt, at de data, man møder, ikke altid har det ønskede format. Denne lektion introducerer metoder i TensorFlow, der muliggør manipulation af struktur og indhold i tensores for at opfylde specifikke krav.
Omformning af tensores
Ved arbejde med tensores opstår der situationer, hvor det er nødvendigt at ændre formen uden at ændre de underliggende data. tf.reshape()
er nyttig i sådanne tilfælde.
Sådan fungerer det:
- Omformning ændrer tensorens struktur, men ikke dens data. Det samlede antal elementer før og efter omformningen skal forblive det samme;
- Funktionen "udfylder" den nye form rækkevis (fra venstre mod højre, oppefra 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 angiver den nye form, kan én dimension være -1
. TensorFlow beregner størrelsen af denne dimension, så den samlede størrelse forbliver konstant.
Dette er særligt nyttigt, når du vil give tensore som input til et neuralt netværk, men dimensionerne ikke matcher netværkets inputform.
Udskæring
Udskæring hjælper dig med at hente en del af en tensor. Det svarer til Python's list slicing, men udvidet til multi-dimensionelle tensore.
Sådan fungerer det:
tf.slice()
udtrækker et udsnit fra en tensor. Den kræver startindekset for udsnittet og størrelsen af udsnittet;- Hvis størrelsen er
-1
, angiver det alle elementer i den dimension.
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 altid nul-baseret indeksering i TensorFlow, hvilket svarer til Pythons egen indeksering. Nyttigt til at udtrække specifikke egenskaber eller datapunkter fra et større datasæt.
Ændring af data
Der findes en anden måde at slice på, som også gør det muligt at ændre de oprindelige data, ligesom ved slicing af arrays i NumPy.
Sådan fungerer det:
- Ved at bruge
[]
kan du nemt slice og indeksere tensores, på samme måde som NumPy slicing. Denne metode gør det muligt at vælge specifikke rækker, kolonner eller elementer i en tensor; - Med
tf.Variable()
bliver tensoren muterbar, hvilket tillader direkte ændringer ved hjælp af slicing; - For at ændre værdierne i den valgte subtensor, anvend
.assign()
-metoden med en tensor eller liste, der matcher dens 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)
- Skæresyntaksen i TensorFlow er i høj grad inspireret af NumPy, så hvis du er bekendt med NumPy, er overgangen til TensorFlows skæremekanisme ligetil;
- Sørg altid for at bruge
tf.Variable()
til operationer, der kræver tensor-mutabilitet.
Sammenkædning
Sammenkædning muliggør sammenføjning af flere tensores langs en specificeret akse.
Sådan fungerer det:
tf.concat()
kombinerer tensores. Metoden kræver en liste af tensores, du ønsker at sammenkæde, samt aksen, hvor operationen skal udføres;- Aksen er nul-baseret. En akse på
0
refererer til rækker (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 de tensorer, du sammenføjer, har matchende dimensioner på de ikke-sammenkædede akser;
- Denne operation ligner
numpy.concatenate()
, men er tilpasset TensorFlow-tensorer.
Swipe to start coding
Baggrund
Du arbejder med et datasæt bestående af målinger fra forskellige sensorer placeret på forskellige geografiske lokationer. Disse sensorer registrerer vejrrelaterede data såsom temperatur, tryk og normaliserede geografiske koordinater.
Dog har du under sammenstillingen af målingerne opdaget, at nogle af dataene er blevet registreret forkert.
Du har også modtaget nye målinger fra andre sensorer, som skal inkluderes.
Datasætinformation
-
main_dataset
: En tensor med formen(6, 4)
, der repræsenterer 6 målinger. Hver række er en prøve, og kolonnerne repræsenterer følgende egenskaber:- Temperature (in Celsius);
- Pressure (in hPa);
- Normalized latitude coordinate;
- Normalized longitude coordinate.
-
error_correction_data
: En tensor med formen(2, 4)
, der repræsenterer 2 korrigerede målinger for fejlagtige data i hoveddatasættet. -
additional_data
: En tensor med formen(3, 4)
, der repræsenterer 3 nye målinger.
Formål
Forbered et korrigeret og komplet datasæt til vejrudsigtsformål:
-
Datakorrigering:
- Du har fundet ud af, at målingerne på 2. og 5. række i
main_dataset
var unøjagtige. Erstat disse rækker imain_dataset
med rækkerne fraerror_correction_data
.
- Du har fundet ud af, at målingerne på 2. og 5. række i
-
Inkludér yderligere data:
- Sammenkæd
main_dataset
medadditional_data
for at inkludere de nye målinger.
- Sammenkæd
-
Batch-omformning:
- Med henblik på batch-træning ønsker du at opdele datasættet i batches med 3 målinger per batch. Omform
complete_dataset
, hvor den første dimension repræsenterer batch-størrelsen, og den anden dimension repræsenterer antallet af målinger per batch.
- Med henblik på batch-træning ønsker du at opdele datasættet i batches med 3 målinger per batch. Omform
Løsning
Tak for dine kommentarer!
single