Transformationer
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).
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 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.
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)
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.
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)
- 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ärdet1
avser kolumner (horisontellt).
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ä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.
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
-
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.
-
error_correction_data
: En tensor med formen(2, 4)
som representerar 2 korrigerade avläsningar för felaktig data i huvuddatamängden. -
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:
-
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 imain_dataset
med raderna frånerror_correction_data
.
- Du har upptäckt att avläsningarna på den 2:a och 5:e raden i
-
Inkludera ytterligare data:
- Sammanfoga
main_dataset
medadditional_data
för att inkludera de nya avläsningarna.
- Sammanfoga
-
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.
- För batch-träning vill du dela upp datamängden i batcher med 3 avläsningar per batch. Omforma
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 5.56
Transformationer
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).
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 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.
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)
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.
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)
- 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ärdet1
avser kolumner (horisontellt).
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ä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.
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
-
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.
-
error_correction_data
: En tensor med formen(2, 4)
som representerar 2 korrigerade avläsningar för felaktig data i huvuddatamängden. -
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:
-
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 imain_dataset
med raderna frånerror_correction_data
.
- Du har upptäckt att avläsningarna på den 2:a och 5:e raden i
-
Inkludera ytterligare data:
- Sammanfoga
main_dataset
medadditional_data
för att inkludera de nya avläsningarna.
- Sammanfoga
-
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.
- För batch-träning vill du dela upp datamängden i batcher med 3 avläsningar per batch. Omforma
Lösning
Tack för dina kommentarer!
single