Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Transformationer | Tensorer
Introduktion till Tensorflow

bookTransformationer

Tensortransformationer

Denna lektion fördjupar sig i avancerade operationer för transformering av tensorer.

Tensortransformationer är avgörande vid hantering av data. När man fördjupar sig inom deep learning och datavetenskap blir det tydligt att data inte alltid förekommer i önskat format. Denna lektion introducerar metoder i TensorFlow som möjliggör manipulering av struktur och innehåll i tensorer för att uppfylla specifika krav.

Omformning av tensorer

Vid arbete med tensorer kan det ibland vara nödvändigt att ändra formen utan att påverka underliggande data. tf.reshape() är användbar i sådana situationer.

Så fungerar det:

  • Omformning ändrar tensorens struktur, men inte dess data. Totala antalet element före och efter omformningen måste vara detsamma;
  • Den fyller den nya formen radvis (från vänster till höger, uppifrån och ner).
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
Observera

När du anger den nya formen kan en dimension vara -1. TensorFlow beräknar storleken på den dimensionen så att den totala storleken förblir konstant.

Detta är särskilt användbart när du vill mata in tensorer i ett neuralt nätverk men dimensionerna inte matchar nätverkets indataform.

Slicing

Slicing hjälper dig att hämta en del av en tensor. Det är analogt med Pythons list-slicing men utökat till multidimensionella tensorer.

Så här fungerar det:

  • tf.slice() extraherar en del av en tensor. Den kräver startindex för slicen och storleken på slicen;
  • Om storleken är -1 avser det alla element i den dimensionen.
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
Notering

Kom alltid ihåg nollbaserad indexering i TensorFlow, vilket liknar Pythons inbyggda indexering. Användbart för att extrahera specifika egenskaper eller datapunkter från en större datamängd.

Modifiering av data

Det finns ett annat sätt att skiva som även tillåter att modifiera den ursprungliga datan, liknande att skiva arrayer i NumPy.

Så här fungerar det:

  • Genom att använda [] kan du enkelt skiva och indexera tensorer, likt NumPy-slicing. Detta tillvägagångssätt gör det möjligt att välja specifika rader, kolumner eller element i en tensor;
  • Med tf.Variable() blir tensorn muterbar, vilket möjliggör direkta modifieringar med slicing;
  • För att ändra värdena i den valda subtensorn, använd metoden .assign() med en tensor eller lista som matchar dess 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
Observera
  • Skivningssyntaxen i TensorFlow är till stor del inspirerad av NumPy, så om du är bekant med NumPy är övergången till TensorFlows skivningsmekanism enkel;
  • Använd alltid tf.Variable() för alla operationer som kräver att tensorn är muterbar.

Sammanfogning

Sammanfogning möjliggör att slå ihop flera tensorer längs en angiven axel.

Så här fungerar det:

  • tf.concat() kombinerar tensorer. Metoden kräver en lista med tensorer som du vill sammanfoga samt axeln längs vilken operationen ska utföras;
  • Axeln är nollbaserad. En axel med värdet 0 avser rader (vertikalt) och en axel med värdet 1 avser kolumner (horisontellt).
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
Observera
  • Säkerställ att tensorerna du sammanfogar har matchande dimensioner på de icke-sammanfogade axlarna;
  • Denna operation liknar numpy.concatenate(), men är anpassad för TensorFlow-tensorer.
Uppgift

Swipe to start coding

Bakgrund

Du arbetar med en datamängd bestående av avläsningar från olika sensorer placerade på olika geografiska platser. Dessa sensorer registrerar väderrelaterad data såsom temperatur, tryck och normaliserade geografiska koordinater.

Vid sammanställningen av avläsningarna upptäckte du att viss data har registrerats felaktigt.

Du har även fått in nya avläsningar från andra sensorer som behöver inkluderas.

Information om datamängden

  1. main_dataset: En tensor med formen (6, 4) som representerar 6 avläsningar. Varje rad är ett prov, och kolumnerna representerar följande egenskaper:

    • Temperatur (i Celsius);
    • Tryck (i hPa);
    • Normaliserad latitudkoordinat;
    • Normaliserad longitudkoordinat.
  2. error_correction_data: En tensor med formen (2, 4) som representerar 2 korrigerade avläsningar för felaktig data i huvuddatamängden.

  3. additional_data: En tensor med formen (3, 4) som representerar 3 nya avläsningar.

Syfte

Förbered en korrigerad och komplett datamängd för väderprognos:

  1. Datakorrigering:

    • Du har upptäckt att avläsningarna på den 2:a och 5:e raden i main_dataset var felaktiga. Ersätt dessa rader i main_dataset med raderna från error_correction_data.
  2. Inkludera ytterligare data:

    • Sammanfoga main_dataset med additional_data för att inkludera de nya avläsningarna.
  3. Batch-omformning:

    • För batch-träning vill du dela upp datamängden i batcher med 3 avläsningar per batch. Omforma complete_dataset så att den första dimensionen representerar batchstorleken och den andra dimensionen representerar antalet avläsningar per batch.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 11
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

Awesome!

Completion rate improved to 5.56

bookTransformationer

Svep för att visa menyn

Tensortransformationer

Denna lektion fördjupar sig i avancerade operationer för transformering av tensorer.

Tensortransformationer är avgörande vid hantering av data. När man fördjupar sig inom deep learning och datavetenskap blir det tydligt att data inte alltid förekommer i önskat format. Denna lektion introducerar metoder i TensorFlow som möjliggör manipulering av struktur och innehåll i tensorer för att uppfylla specifika krav.

Omformning av tensorer

Vid arbete med tensorer kan det ibland vara nödvändigt att ändra formen utan att påverka underliggande data. tf.reshape() är användbar i sådana situationer.

Så fungerar det:

  • Omformning ändrar tensorens struktur, men inte dess data. Totala antalet element före och efter omformningen måste vara detsamma;
  • Den fyller den nya formen radvis (från vänster till höger, uppifrån och ner).
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
Observera

När du anger den nya formen kan en dimension vara -1. TensorFlow beräknar storleken på den dimensionen så att den totala storleken förblir konstant.

Detta är särskilt användbart när du vill mata in tensorer i ett neuralt nätverk men dimensionerna inte matchar nätverkets indataform.

Slicing

Slicing hjälper dig att hämta en del av en tensor. Det är analogt med Pythons list-slicing men utökat till multidimensionella tensorer.

Så här fungerar det:

  • tf.slice() extraherar en del av en tensor. Den kräver startindex för slicen och storleken på slicen;
  • Om storleken är -1 avser det alla element i den dimensionen.
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
Notering

Kom alltid ihåg nollbaserad indexering i TensorFlow, vilket liknar Pythons inbyggda indexering. Användbart för att extrahera specifika egenskaper eller datapunkter från en större datamängd.

Modifiering av data

Det finns ett annat sätt att skiva som även tillåter att modifiera den ursprungliga datan, liknande att skiva arrayer i NumPy.

Så här fungerar det:

  • Genom att använda [] kan du enkelt skiva och indexera tensorer, likt NumPy-slicing. Detta tillvägagångssätt gör det möjligt att välja specifika rader, kolumner eller element i en tensor;
  • Med tf.Variable() blir tensorn muterbar, vilket möjliggör direkta modifieringar med slicing;
  • För att ändra värdena i den valda subtensorn, använd metoden .assign() med en tensor eller lista som matchar dess 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
Observera
  • Skivningssyntaxen i TensorFlow är till stor del inspirerad av NumPy, så om du är bekant med NumPy är övergången till TensorFlows skivningsmekanism enkel;
  • Använd alltid tf.Variable() för alla operationer som kräver att tensorn är muterbar.

Sammanfogning

Sammanfogning möjliggör att slå ihop flera tensorer längs en angiven axel.

Så här fungerar det:

  • tf.concat() kombinerar tensorer. Metoden kräver en lista med tensorer som du vill sammanfoga samt axeln längs vilken operationen ska utföras;
  • Axeln är nollbaserad. En axel med värdet 0 avser rader (vertikalt) och en axel med värdet 1 avser kolumner (horisontellt).
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
Observera
  • Säkerställ att tensorerna du sammanfogar har matchande dimensioner på de icke-sammanfogade axlarna;
  • Denna operation liknar numpy.concatenate(), men är anpassad för TensorFlow-tensorer.
Uppgift

Swipe to start coding

Bakgrund

Du arbetar med en datamängd bestående av avläsningar från olika sensorer placerade på olika geografiska platser. Dessa sensorer registrerar väderrelaterad data såsom temperatur, tryck och normaliserade geografiska koordinater.

Vid sammanställningen av avläsningarna upptäckte du att viss data har registrerats felaktigt.

Du har även fått in nya avläsningar från andra sensorer som behöver inkluderas.

Information om datamängden

  1. main_dataset: En tensor med formen (6, 4) som representerar 6 avläsningar. Varje rad är ett prov, och kolumnerna representerar följande egenskaper:

    • Temperatur (i Celsius);
    • Tryck (i hPa);
    • Normaliserad latitudkoordinat;
    • Normaliserad longitudkoordinat.
  2. error_correction_data: En tensor med formen (2, 4) som representerar 2 korrigerade avläsningar för felaktig data i huvuddatamängden.

  3. additional_data: En tensor med formen (3, 4) som representerar 3 nya avläsningar.

Syfte

Förbered en korrigerad och komplett datamängd för väderprognos:

  1. Datakorrigering:

    • Du har upptäckt att avläsningarna på den 2:a och 5:e raden i main_dataset var felaktiga. Ersätt dessa rader i main_dataset med raderna från error_correction_data.
  2. Inkludera ytterligare data:

    • Sammanfoga main_dataset med additional_data för att inkludera de nya avläsningarna.
  3. Batch-omformning:

    • För batch-träning vill du dela upp datamängden i batcher med 3 avläsningar per batch. Omforma complete_dataset så att den första dimensionen representerar batchstorleken och den andra dimensionen representerar antalet avläsningar per batch.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 11
single

single

some-alt