Transformações
Transformações de Tensores
Esta lição explora as operações avançadas de transformação de tensores.
As transformações de tensores são essenciais ao lidar com dados. À medida que se aprofunda em tarefas de deep learning e ciência de dados, torna-se evidente que os dados encontrados nem sempre estão no formato desejado. Esta lição apresenta métodos no TensorFlow que possibilitam a manipulação da estrutura e do conteúdo dos tensores para atender a requisitos específicos.
Redimensionamento de Tensores
Ao trabalhar com tensores, há situações em que é necessário alterar a forma sem modificar os dados subjacentes. O tf.reshape() é útil nesses casos.
Como funciona:
- O redimensionamento altera a estrutura do tensor, mas não seus dados. O número total de elementos antes e depois do redimensionamento deve permanecer o mesmo;
- Opera "preenchendo" a nova forma linha por linha (da esquerda para a direita, de cima para baixo).
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)
Ao especificar a nova forma, uma dimensão pode ser -1. O TensorFlow calculará o tamanho dessa dimensão para que o tamanho total permaneça constante.
Isso é particularmente útil quando se deseja alimentar tensores em uma rede neural, mas as dimensões não correspondem ao formato de entrada da rede.
Fatiamento
O fatiamento permite recuperar uma parte de um tensor. É análogo ao fatiamento de listas em Python, mas estendido para tensores multidimensionais.
Como funciona:
tf.slice()extrai uma fatia de um tensor. Requer o índice inicial da fatia e o tamanho da fatia;- Se o tamanho for
-1, indica todos os elementos naquela dimensão.
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)
Sempre considerar a indexação baseada em zero do TensorFlow, semelhante à indexação nativa do Python. Útil para extrair características ou pontos de dados específicos de um conjunto de dados maior.
Modificação de Dados
Existe outra forma de fatiamento que também permite modificar os dados originais, semelhante ao fatiamento de arrays no NumPy.
Como funciona:
- Utilizando
[], é possível fatiar e indexar tensores facilmente, semelhante ao fatiamento do NumPy. Esse método permite selecionar linhas, colunas ou elementos específicos de um tensor; - Com
tf.Variable(), o tensor se torna mutável, permitindo modificações diretas por meio de fatiamento; - Para modificar os valores do subtensor selecionado, utilize o método
.assign()com um tensor ou lista que corresponda ao seu formato.
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)
- A sintaxe de fatiamento no TensorFlow é amplamente inspirada no NumPy, portanto, se você já conhece o NumPy, a transição para o mecanismo de fatiamento do TensorFlow é direta;
- Sempre utilize
tf.Variable()para quaisquer operações que exijam mutabilidade do tensor.
Concatenação
A concatenação permite unir múltiplos tensores ao longo de um eixo especificado.
Como funciona:
tf.concat()combina tensores. O método requer uma lista de tensores que você deseja concatenar e o eixo ao longo do qual realizar a operação;- O eixo é baseado em zero. Um eixo igual a
0refere-se às linhas (verticalmente) e um eixo igual a1refere-se às colunas (horizontalmente).
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)
- Certifique-se de que os tensores que você está unindo possuam dimensões correspondentes nos eixos não concatenados;
- Esta operação é semelhante a
numpy.concatenate(), mas adaptada para tensores do TensorFlow.
Swipe to start coding
Contexto
Você está trabalhando com um conjunto de dados composto por leituras de vários sensores posicionados em diferentes locais geográficos. Esses sensores registram dados meteorológicos, como temperatura, pressão e coordenadas geográficas normalizadas.
No entanto, ao compilar as leituras, foi identificado que alguns dados foram registrados incorretamente.
Você também recebeu novas leituras de outros sensores que precisam ser incluídas.
Informações do Conjunto de Dados
-
main_dataset: Um tensor de forma(6, 4)representando 6 leituras. Cada linha é uma amostra, e as colunas representam as seguintes características:- Temperatura (em Celsius);
- Pressão (em hPa);
- Coordenada de latitude normalizada;
- Coordenada de longitude normalizada.
-
error_correction_data: Um tensor de forma(2, 4)representando 2 leituras corrigidas para dados errôneos no conjunto principal. -
additional_data: Um tensor de forma(3, 4)representando 3 novas leituras.
Objetivo
Preparar um conjunto de dados corrigido e completo para previsão meteorológica:
-
Correção de Dados:
- Foi identificado que as leituras nas linhas 2 e 5 do
main_datasetestavam imprecisas. Substitua essas linhas nomain_datasetpelas linhas correspondentes doerror_correction_data.
- Foi identificado que as leituras nas linhas 2 e 5 do
-
Incorporação de Novos Dados:
- Concatene o
main_datasetcom oadditional_datapara incluir as novas leituras.
- Concatene o
-
Redimensionamento em Lotes:
- Para fins de treinamento em lotes, divida o conjunto de dados em lotes com 3 leituras por lote. Redimensione o
complete_dataset, onde a primeira dimensão representa o tamanho do lote e a segunda dimensão representa o número de leituras por lote.
- Para fins de treinamento em lotes, divida o conjunto de dados em lotes com 3 leituras por lote. Redimensione o
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Transformações
Deslize para mostrar o menu
Transformações de Tensores
Esta lição explora as operações avançadas de transformação de tensores.
As transformações de tensores são essenciais ao lidar com dados. À medida que se aprofunda em tarefas de deep learning e ciência de dados, torna-se evidente que os dados encontrados nem sempre estão no formato desejado. Esta lição apresenta métodos no TensorFlow que possibilitam a manipulação da estrutura e do conteúdo dos tensores para atender a requisitos específicos.
Redimensionamento de Tensores
Ao trabalhar com tensores, há situações em que é necessário alterar a forma sem modificar os dados subjacentes. O tf.reshape() é útil nesses casos.
Como funciona:
- O redimensionamento altera a estrutura do tensor, mas não seus dados. O número total de elementos antes e depois do redimensionamento deve permanecer o mesmo;
- Opera "preenchendo" a nova forma linha por linha (da esquerda para a direita, de cima para baixo).
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)
Ao especificar a nova forma, uma dimensão pode ser -1. O TensorFlow calculará o tamanho dessa dimensão para que o tamanho total permaneça constante.
Isso é particularmente útil quando se deseja alimentar tensores em uma rede neural, mas as dimensões não correspondem ao formato de entrada da rede.
Fatiamento
O fatiamento permite recuperar uma parte de um tensor. É análogo ao fatiamento de listas em Python, mas estendido para tensores multidimensionais.
Como funciona:
tf.slice()extrai uma fatia de um tensor. Requer o índice inicial da fatia e o tamanho da fatia;- Se o tamanho for
-1, indica todos os elementos naquela dimensão.
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)
Sempre considerar a indexação baseada em zero do TensorFlow, semelhante à indexação nativa do Python. Útil para extrair características ou pontos de dados específicos de um conjunto de dados maior.
Modificação de Dados
Existe outra forma de fatiamento que também permite modificar os dados originais, semelhante ao fatiamento de arrays no NumPy.
Como funciona:
- Utilizando
[], é possível fatiar e indexar tensores facilmente, semelhante ao fatiamento do NumPy. Esse método permite selecionar linhas, colunas ou elementos específicos de um tensor; - Com
tf.Variable(), o tensor se torna mutável, permitindo modificações diretas por meio de fatiamento; - Para modificar os valores do subtensor selecionado, utilize o método
.assign()com um tensor ou lista que corresponda ao seu formato.
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)
- A sintaxe de fatiamento no TensorFlow é amplamente inspirada no NumPy, portanto, se você já conhece o NumPy, a transição para o mecanismo de fatiamento do TensorFlow é direta;
- Sempre utilize
tf.Variable()para quaisquer operações que exijam mutabilidade do tensor.
Concatenação
A concatenação permite unir múltiplos tensores ao longo de um eixo especificado.
Como funciona:
tf.concat()combina tensores. O método requer uma lista de tensores que você deseja concatenar e o eixo ao longo do qual realizar a operação;- O eixo é baseado em zero. Um eixo igual a
0refere-se às linhas (verticalmente) e um eixo igual a1refere-se às colunas (horizontalmente).
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)
- Certifique-se de que os tensores que você está unindo possuam dimensões correspondentes nos eixos não concatenados;
- Esta operação é semelhante a
numpy.concatenate(), mas adaptada para tensores do TensorFlow.
Swipe to start coding
Contexto
Você está trabalhando com um conjunto de dados composto por leituras de vários sensores posicionados em diferentes locais geográficos. Esses sensores registram dados meteorológicos, como temperatura, pressão e coordenadas geográficas normalizadas.
No entanto, ao compilar as leituras, foi identificado que alguns dados foram registrados incorretamente.
Você também recebeu novas leituras de outros sensores que precisam ser incluídas.
Informações do Conjunto de Dados
-
main_dataset: Um tensor de forma(6, 4)representando 6 leituras. Cada linha é uma amostra, e as colunas representam as seguintes características:- Temperatura (em Celsius);
- Pressão (em hPa);
- Coordenada de latitude normalizada;
- Coordenada de longitude normalizada.
-
error_correction_data: Um tensor de forma(2, 4)representando 2 leituras corrigidas para dados errôneos no conjunto principal. -
additional_data: Um tensor de forma(3, 4)representando 3 novas leituras.
Objetivo
Preparar um conjunto de dados corrigido e completo para previsão meteorológica:
-
Correção de Dados:
- Foi identificado que as leituras nas linhas 2 e 5 do
main_datasetestavam imprecisas. Substitua essas linhas nomain_datasetpelas linhas correspondentes doerror_correction_data.
- Foi identificado que as leituras nas linhas 2 e 5 do
-
Incorporação de Novos Dados:
- Concatene o
main_datasetcom oadditional_datapara incluir as novas leituras.
- Concatene o
-
Redimensionamento em Lotes:
- Para fins de treinamento em lotes, divida o conjunto de dados em lotes com 3 leituras por lote. Redimensione o
complete_dataset, onde a primeira dimensão representa o tamanho do lote e a segunda dimensão representa o número de leituras por lote.
- Para fins de treinamento em lotes, divida o conjunto de dados em lotes com 3 leituras por lote. Redimensione o
Solução
Obrigado pelo seu feedback!
single