Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Transformationer | Tensor Operations and Execution
Quizzes & Challenges
Quizzes
Challenges
/
Introduktion til Tensorflow

bookTransformationer

Tensortransformationer

Denne lektion går i dybden med avancerede operationer 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 er i 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 arbejder ved at "fylde" den nye form rækkevis (fra venstre mod højre, fra top til bund).
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
Bemærk

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 indsætte tensores i 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 listeudskæring, men udvidet til multi-dimensionelle tensores.

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.
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
Bemærk

Husk altid nul-baseret indeksering i TensorFlow, hvilket svarer til Pythons egen indeksering. Nyttigt til at udtrække specifikke funktioner eller datapunkter fra et større datasæt.

Ændring af data

Der findes en anden måde at slice på, som også tillader ændring af de oprindelige data, svarende til slicing af arrays i NumPy.

Sådan fungerer det:

  • Ved at bruge [] kan du nemt slice og indeksere tensores, ligesom 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 muliggør direkte ændringer via slicing;
  • For at ændre værdierne i den valgte subtensor, anvend .assign()-metoden med en tensor eller liste, der matcher dens 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
Bemærk
  • 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 alle operationer, der kræver tensor-mutabilitet.

Sammenkædning

Sammenkædning gør det muligt at forene 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).
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
Bemærk
  • 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.
Opgave

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.

Ved sammenstilling af målingerne har du dog opdaget, at nogle af dataene er blevet registreret forkert.

Du har også modtaget nye målinger fra andre sensorer, som skal inkluderes.

Datasætinformation

  1. 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:

    • Temperatur (i Celsius);
    • Tryk (i hPa);
    • Normaliseret breddegrad;
    • Normaliseret længdegrad.
  2. error_correction_data: En tensor med formen (2, 4), der repræsenterer 2 korrigerede målinger for fejlagtige data i hoveddatasættet.

  3. 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:

  1. Datakorrigering:

    • Du har opdaget, at målingerne på 2. og 5. række i main_dataset var unøjagtige. Erstat disse rækker i main_dataset med rækkerne fra error_correction_data.
  2. Inkludér yderligere data:

    • Sammenkæd main_dataset med additional_data for at inkludere de nye målinger.
  3. Batch-omformning:

    • Med henblik på batch-træning ønskes datasættet opdelt i batches med 3 målinger pr. batch. Omform complete_dataset, så den første dimension repræsenterer batchstørrelsen, og den anden dimension repræsenterer antal målinger pr. batch.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 3
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

Can you explain more about how tf.reshape() works?

What are some common use cases for slicing tensors?

How do I decide which axis to use when concatenating tensors?

close

Awesome!

Completion rate improved to 6.25

bookTransformationer

Stryg for at vise menuen

Tensortransformationer

Denne lektion går i dybden med avancerede operationer 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 er i 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 arbejder ved at "fylde" den nye form rækkevis (fra venstre mod højre, fra top til bund).
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
Bemærk

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 indsætte tensores i 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 listeudskæring, men udvidet til multi-dimensionelle tensores.

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.
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
Bemærk

Husk altid nul-baseret indeksering i TensorFlow, hvilket svarer til Pythons egen indeksering. Nyttigt til at udtrække specifikke funktioner eller datapunkter fra et større datasæt.

Ændring af data

Der findes en anden måde at slice på, som også tillader ændring af de oprindelige data, svarende til slicing af arrays i NumPy.

Sådan fungerer det:

  • Ved at bruge [] kan du nemt slice og indeksere tensores, ligesom 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 muliggør direkte ændringer via slicing;
  • For at ændre værdierne i den valgte subtensor, anvend .assign()-metoden med en tensor eller liste, der matcher dens 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
Bemærk
  • 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 alle operationer, der kræver tensor-mutabilitet.

Sammenkædning

Sammenkædning gør det muligt at forene 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).
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
Bemærk
  • 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.
Opgave

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.

Ved sammenstilling af målingerne har du dog opdaget, at nogle af dataene er blevet registreret forkert.

Du har også modtaget nye målinger fra andre sensorer, som skal inkluderes.

Datasætinformation

  1. 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:

    • Temperatur (i Celsius);
    • Tryk (i hPa);
    • Normaliseret breddegrad;
    • Normaliseret længdegrad.
  2. error_correction_data: En tensor med formen (2, 4), der repræsenterer 2 korrigerede målinger for fejlagtige data i hoveddatasættet.

  3. 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:

  1. Datakorrigering:

    • Du har opdaget, at målingerne på 2. og 5. række i main_dataset var unøjagtige. Erstat disse rækker i main_dataset med rækkerne fra error_correction_data.
  2. Inkludér yderligere data:

    • Sammenkæd main_dataset med additional_data for at inkludere de nye målinger.
  3. Batch-omformning:

    • Med henblik på batch-træning ønskes datasættet opdelt i batches med 3 målinger pr. batch. Omform complete_dataset, så den første dimension repræsenterer batchstørrelsen, og den anden dimension repræsenterer antal målinger pr. batch.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 3
single

single

some-alt