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 no tratamento de dados. Ao aprofundar-se 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 ajuda a 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 para a 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 lembrar do indexação baseada em zero do TensorFlow, que é 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:
- Usando
[]
, é possível fatiar e indexar tensores facilmente, semelhante ao fatiamento do NumPy. Essa abordagem permite selecionar linhas, colunas ou elementos específicos de um tensor; - Com
tf.Variable()
, o tensor se torna mutável, permitindo modificações diretas usando 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.
Concatenando
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 se deseja concatenar e o eixo ao longo do qual a operação será realizada;- O eixo é baseado em zero. Um eixo igual a
0
refere-se às linhas (verticalmente) e um eixo igual a1
refere-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 estão sendo unidos possuam dimensões correspondentes nos eixos que não serã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 localidades geográficas. 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.
Além disso, você 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_dataset
estavam incorretas. Substitua essas linhas nomain_dataset
pelas linhas correspondentes doerror_correction_data
.
- Foi identificado que as leituras nas linhas 2 e 5 do
-
Inclusão de Novos Dados:
- Concatene o
main_dataset
com oadditional_data
para incorporar 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 happens if I try to reshape a tensor to an incompatible shape?
Can you give more examples of slicing and modifying tensors?
Awesome!
Completion rate improved to 5.56
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 no tratamento de dados. Ao aprofundar-se 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 ajuda a 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 para a 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 lembrar do indexação baseada em zero do TensorFlow, que é 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:
- Usando
[]
, é possível fatiar e indexar tensores facilmente, semelhante ao fatiamento do NumPy. Essa abordagem permite selecionar linhas, colunas ou elementos específicos de um tensor; - Com
tf.Variable()
, o tensor se torna mutável, permitindo modificações diretas usando 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.
Concatenando
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 se deseja concatenar e o eixo ao longo do qual a operação será realizada;- O eixo é baseado em zero. Um eixo igual a
0
refere-se às linhas (verticalmente) e um eixo igual a1
refere-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 estão sendo unidos possuam dimensões correspondentes nos eixos que não serã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 localidades geográficas. 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.
Além disso, você 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_dataset
estavam incorretas. Substitua essas linhas nomain_dataset
pelas linhas correspondentes doerror_correction_data
.
- Foi identificado que as leituras nas linhas 2 e 5 do
-
Inclusão de Novos Dados:
- Concatene o
main_dataset
com oadditional_data
para incorporar 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