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 data science blir det tydligt att datan man möter inte alltid har ö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 uppstår ibland behovet av att ändra formen utan att ändra underliggande data. tf.reshape() är användbar i sådana situationer.
Så fungerar det:
- Omformning ändrar tensorstruktur, men inte dess data. Totala antalet element före och efter omformning 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
-1innebär 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 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 dela upp data som även möjliggör ändring av originaldata, liknande hur man delar upp arrayer i NumPy.
Så här fungerar det:
- Med hjälp av
[]kan du enkelt dela upp 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 ändringar 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;
- Säkerställ alltid att du använder
tf.Variable()för alla operationer som kräver tensorers muterbarhet.
Sammanfogning
Sammanfogning gör det möjligt att slå ihop flera tensorer längs en angiven axel.
Så här fungerar det:
tf.concat()kombinerar tensorer. Metoden kräver en lista av tensorer som du vill sammanfoga samt axeln längs vilken operationen ska utföras;- Axeln är nollbaserad. En axel med värdet
0avser rader (vertikalt) och en axel med värdet1avser 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å rad 2 och 5 i
main_datasetvar felaktiga. Ersätt dessa rader imain_datasetmed raderna frånerror_correction_data.
- Du har upptäckt att avläsningarna på rad 2 och 5 i
-
Inkludera ytterligare data:
- Sammanfoga
main_datasetmedadditional_dataför att inkludera de nya avläsningarna.
- Sammanfoga
-
Batch-omformning:
- För batchträning vill du dela upp datamängden i batcher med 3 avläsningar per batch. Omforma
complete_datasetså att den första dimensionen representerar batchstorleken och den andra dimensionen representerar antalet avläsningar per batch.
- För batchträ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
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?
Awesome!
Completion rate improved to 6.25
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 data science blir det tydligt att datan man möter inte alltid har ö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 uppstår ibland behovet av att ändra formen utan att ändra underliggande data. tf.reshape() är användbar i sådana situationer.
Så fungerar det:
- Omformning ändrar tensorstruktur, men inte dess data. Totala antalet element före och efter omformning 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
-1innebär 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 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 dela upp data som även möjliggör ändring av originaldata, liknande hur man delar upp arrayer i NumPy.
Så här fungerar det:
- Med hjälp av
[]kan du enkelt dela upp 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 ändringar 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;
- Säkerställ alltid att du använder
tf.Variable()för alla operationer som kräver tensorers muterbarhet.
Sammanfogning
Sammanfogning gör det möjligt att slå ihop flera tensorer längs en angiven axel.
Så här fungerar det:
tf.concat()kombinerar tensorer. Metoden kräver en lista av tensorer som du vill sammanfoga samt axeln längs vilken operationen ska utföras;- Axeln är nollbaserad. En axel med värdet
0avser rader (vertikalt) och en axel med värdet1avser 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å rad 2 och 5 i
main_datasetvar felaktiga. Ersätt dessa rader imain_datasetmed raderna frånerror_correction_data.
- Du har upptäckt att avläsningarna på rad 2 och 5 i
-
Inkludera ytterligare data:
- Sammanfoga
main_datasetmedadditional_dataför att inkludera de nya avläsningarna.
- Sammanfoga
-
Batch-omformning:
- För batchträning vill du dela upp datamängden i batcher med 3 avläsningar per batch. Omforma
complete_datasetså att den första dimensionen representerar batchstorleken och den andra dimensionen representerar antalet avläsningar per batch.
- För batchträning vill du dela upp datamängden i batcher med 3 avläsningar per batch. Omforma
Lösning
Tack för dina kommentarer!
single