Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Transformaties | Tensoren
Introductie tot TensorFlow

bookTransformaties

Tensortransformaties

Deze les behandelt de geavanceerde bewerkingen van het transformeren van tensors.

Tensortransformaties zijn essentieel bij het verwerken van data. Naarmate men zich verder verdiept in deep learning en datawetenschap, wordt het duidelijk dat de aangeleverde data niet altijd in het gewenste formaat is. Deze les introduceert methoden in TensorFlow waarmee de structuur en inhoud van tensors gemanipuleerd kunnen worden om aan specifieke eisen te voldoen.

Tensors herschikken

Bij het werken met tensors is het soms nodig om de vorm te wijzigen zonder de onderliggende data aan te passen. tf.reshape() is hiervoor geschikt.

Werking:

  • Herschikken verandert de structuur van de tensor, maar niet de data. Het totaal aantal elementen moet vóór en na het herschikken gelijk blijven;
  • De nieuwe vorm wordt rij-voor-rij gevuld (van links naar rechts, van boven naar beneden).
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
Opmerking

Bij het specificeren van de nieuwe vorm mag één dimensie -1 zijn. TensorFlow berekent dan de grootte van die dimensie zodat de totale omvang gelijk blijft.

Dit is vooral handig wanneer je tensors aan een neuraal netwerk wilt aanbieden, maar de dimensies niet overeenkomen met de vereiste invoervorm van het netwerk.

Slicing

Slicing helpt bij het ophalen van een gedeelte van een tensor. Het is vergelijkbaar met het slicen van lijsten in Python, maar dan uitgebreid naar multi-dimensionale tensors.

Werking:

  • tf.slice() haalt een deel van een tensor op. Hiervoor zijn het beginindex van de slice en de grootte van de slice vereist;
  • Als de grootte -1 is, betekent dit alle elementen in die dimensie.
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
Opmerking

Onthoud altijd de nul-gebaseerde indexering van TensorFlow, vergelijkbaar met de native indexering van Python. Nuttig voor het extraheren van specifieke kenmerken of datapunten uit een grotere dataset.

Gegevens wijzigen

Er is een andere manier van slicen die ook toestaat om de originele gegevens te wijzigen, vergelijkbaar met het slicen van arrays in NumPy.

Werking:

  • Met behulp van [] kunnen tensors eenvoudig worden gesliced en geïndexeerd, vergelijkbaar met NumPy-slicing. Deze methode maakt het mogelijk om specifieke rijen, kolommen of elementen van een tensor te selecteren;
  • Met tf.Variable() wordt de tensor muteerbaar, waardoor directe wijzigingen via slicing mogelijk zijn;
  • Om de waarden van het geselecteerde subtensor te wijzigen, gebruik de .assign()-methode met een tensor of lijst die overeenkomt met de vorm.
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
Opmerking
  • De slicing-syntaxis in TensorFlow is grotendeels geïnspireerd door NumPy, dus als je bekend bent met NumPy, is de overstap naar TensorFlow's slicing-mechanisme eenvoudig;
  • Gebruik altijd tf.Variable() voor bewerkingen waarbij tensor-mutabiliteit vereist is.

Concatenatie

Concatenatie maakt het mogelijk om meerdere tensors samen te voegen langs een opgegeven as.

Werking:

  • tf.concat() combineert tensors. De methode vereist een lijst van tensors die je wilt samenvoegen en de as waarlangs de operatie wordt uitgevoerd;
  • De as is nul-gebaseerd. Een as van 0 verwijst naar rijen (verticaal) en een as van 1 verwijst naar kolommen (horizontaal).
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
Opmerking
  • Zorg ervoor dat de tensors die je samenvoegt overeenkomende dimensies hebben op de niet-geconcateneerde assen;
  • Deze bewerking lijkt op numpy.concatenate(), maar is aangepast voor TensorFlow-tensors.
Taak

Swipe to start coding

Achtergrond

Je werkt met een dataset bestaande uit metingen van verschillende sensoren die op diverse geografische locaties zijn geplaatst. Deze sensoren registreren weergerelateerde gegevens zoals temperatuur, luchtdruk en genormaliseerde geografische coördinaten.

Tijdens het samenstellen van de metingen ontdekte je echter dat sommige gegevens onjuist zijn geregistreerd.

Je hebt ook nieuwe metingen van andere sensoren ontvangen die je moet toevoegen.

Datasetinformatie

  1. main_dataset: Een tensor met vorm (6, 4) die 6 metingen weergeeft. Elke rij is een sample en de kolommen vertegenwoordigen de volgende kenmerken:

    • Temperatuur (in Celsius);
    • Luchtdruk (in hPa);
    • Genormaliseerde breedtegraad;
    • Genormaliseerde lengtegraad.
  2. error_correction_data: Een tensor met vorm (2, 4) die 2 gecorrigeerde metingen voor foutieve gegevens in de hoofd-dataset bevat.

  3. additional_data: Een tensor met vorm (3, 4) die 3 nieuwe metingen bevat.

Doelstelling

Bereid een gecorrigeerde en volledige dataset voor weersvoorspelling voor:

  1. Gegevenscorrectie:

    • Je hebt vastgesteld dat de metingen op de 2e en 5e rij van de main_dataset onnauwkeurig waren. Vervang deze rijen in de main_dataset door de rijen uit error_correction_data.
  2. Toevoegen van extra gegevens:

    • Concateneer de main_dataset met additional_data om de nieuwe metingen toe te voegen.
  3. Batch-reshaping:

    • Voor batchtraining wil je de dataset opdelen in batches met 3 metingen per batch. Reshape complete_dataset, waarbij de eerste dimensie de batchgrootte vertegenwoordigt en de tweede dimensie het aantal metingen per batch.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 11
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 5.56

bookTransformaties

Veeg om het menu te tonen

Tensortransformaties

Deze les behandelt de geavanceerde bewerkingen van het transformeren van tensors.

Tensortransformaties zijn essentieel bij het verwerken van data. Naarmate men zich verder verdiept in deep learning en datawetenschap, wordt het duidelijk dat de aangeleverde data niet altijd in het gewenste formaat is. Deze les introduceert methoden in TensorFlow waarmee de structuur en inhoud van tensors gemanipuleerd kunnen worden om aan specifieke eisen te voldoen.

Tensors herschikken

Bij het werken met tensors is het soms nodig om de vorm te wijzigen zonder de onderliggende data aan te passen. tf.reshape() is hiervoor geschikt.

Werking:

  • Herschikken verandert de structuur van de tensor, maar niet de data. Het totaal aantal elementen moet vóór en na het herschikken gelijk blijven;
  • De nieuwe vorm wordt rij-voor-rij gevuld (van links naar rechts, van boven naar beneden).
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
Opmerking

Bij het specificeren van de nieuwe vorm mag één dimensie -1 zijn. TensorFlow berekent dan de grootte van die dimensie zodat de totale omvang gelijk blijft.

Dit is vooral handig wanneer je tensors aan een neuraal netwerk wilt aanbieden, maar de dimensies niet overeenkomen met de vereiste invoervorm van het netwerk.

Slicing

Slicing helpt bij het ophalen van een gedeelte van een tensor. Het is vergelijkbaar met het slicen van lijsten in Python, maar dan uitgebreid naar multi-dimensionale tensors.

Werking:

  • tf.slice() haalt een deel van een tensor op. Hiervoor zijn het beginindex van de slice en de grootte van de slice vereist;
  • Als de grootte -1 is, betekent dit alle elementen in die dimensie.
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
Opmerking

Onthoud altijd de nul-gebaseerde indexering van TensorFlow, vergelijkbaar met de native indexering van Python. Nuttig voor het extraheren van specifieke kenmerken of datapunten uit een grotere dataset.

Gegevens wijzigen

Er is een andere manier van slicen die ook toestaat om de originele gegevens te wijzigen, vergelijkbaar met het slicen van arrays in NumPy.

Werking:

  • Met behulp van [] kunnen tensors eenvoudig worden gesliced en geïndexeerd, vergelijkbaar met NumPy-slicing. Deze methode maakt het mogelijk om specifieke rijen, kolommen of elementen van een tensor te selecteren;
  • Met tf.Variable() wordt de tensor muteerbaar, waardoor directe wijzigingen via slicing mogelijk zijn;
  • Om de waarden van het geselecteerde subtensor te wijzigen, gebruik de .assign()-methode met een tensor of lijst die overeenkomt met de vorm.
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
Opmerking
  • De slicing-syntaxis in TensorFlow is grotendeels geïnspireerd door NumPy, dus als je bekend bent met NumPy, is de overstap naar TensorFlow's slicing-mechanisme eenvoudig;
  • Gebruik altijd tf.Variable() voor bewerkingen waarbij tensor-mutabiliteit vereist is.

Concatenatie

Concatenatie maakt het mogelijk om meerdere tensors samen te voegen langs een opgegeven as.

Werking:

  • tf.concat() combineert tensors. De methode vereist een lijst van tensors die je wilt samenvoegen en de as waarlangs de operatie wordt uitgevoerd;
  • De as is nul-gebaseerd. Een as van 0 verwijst naar rijen (verticaal) en een as van 1 verwijst naar kolommen (horizontaal).
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
Opmerking
  • Zorg ervoor dat de tensors die je samenvoegt overeenkomende dimensies hebben op de niet-geconcateneerde assen;
  • Deze bewerking lijkt op numpy.concatenate(), maar is aangepast voor TensorFlow-tensors.
Taak

Swipe to start coding

Achtergrond

Je werkt met een dataset bestaande uit metingen van verschillende sensoren die op diverse geografische locaties zijn geplaatst. Deze sensoren registreren weergerelateerde gegevens zoals temperatuur, luchtdruk en genormaliseerde geografische coördinaten.

Tijdens het samenstellen van de metingen ontdekte je echter dat sommige gegevens onjuist zijn geregistreerd.

Je hebt ook nieuwe metingen van andere sensoren ontvangen die je moet toevoegen.

Datasetinformatie

  1. main_dataset: Een tensor met vorm (6, 4) die 6 metingen weergeeft. Elke rij is een sample en de kolommen vertegenwoordigen de volgende kenmerken:

    • Temperatuur (in Celsius);
    • Luchtdruk (in hPa);
    • Genormaliseerde breedtegraad;
    • Genormaliseerde lengtegraad.
  2. error_correction_data: Een tensor met vorm (2, 4) die 2 gecorrigeerde metingen voor foutieve gegevens in de hoofd-dataset bevat.

  3. additional_data: Een tensor met vorm (3, 4) die 3 nieuwe metingen bevat.

Doelstelling

Bereid een gecorrigeerde en volledige dataset voor weersvoorspelling voor:

  1. Gegevenscorrectie:

    • Je hebt vastgesteld dat de metingen op de 2e en 5e rij van de main_dataset onnauwkeurig waren. Vervang deze rijen in de main_dataset door de rijen uit error_correction_data.
  2. Toevoegen van extra gegevens:

    • Concateneer de main_dataset met additional_data om de nieuwe metingen toe te voegen.
  3. Batch-reshaping:

    • Voor batchtraining wil je de dataset opdelen in batches met 3 metingen per batch. Reshape complete_dataset, waarbij de eerste dimensie de batchgrootte vertegenwoordigt en de tweede dimensie het aantal metingen per batch.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 11
single

single

some-alt