Operações de Redução
Operações de Redução
No contexto das operações com tensores, existem diversas situações em que é necessário reduzir as dimensões dos dados, seja resumindo-os ao longo de um ou mais eixos. Por exemplo, ao trabalhar com um tensor 2D (uma matriz), uma operação de redução pode calcular um valor para cada linha ou coluna, resultando em um tensor 1D (um vetor). O TensorFlow oferece um conjunto de operações para esse propósito e, neste capítulo, exploraremos as operações de redução mais utilizadas.
Soma, Média, Máximo e Mínimo
O TensorFlow disponibiliza os seguintes métodos para esses cálculos:
tf.reduce_sum()
: calcula a soma de todos os elementos do tensor ou ao longo de um eixo específico;tf.reduce_mean()
: calcula a média dos elementos do tensor;tf.reduce_max()
: determina o valor máximo no tensor;tf.reduce_min()
: encontra o valor mínimo no tensor.
12345678910111213141516171819import tensorflow as tf tensor = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) # Calculate sum of all elements total_sum = tf.reduce_sum(tensor) print("Total Sum:", total_sum.numpy()) # Calculate mean of all elements mean_val = tf.reduce_mean(tensor) print("Mean Value:", mean_val.numpy()) # Determine the maximum value max_val = tf.reduce_max(tensor) print("Maximum Value:", max_val.numpy()) # Find the minimum value min_val = tf.reduce_min(tensor) print("Minimum Value:", min_val.numpy())
O método .numpy()
foi utilizado para converter os tensores em arrays NumPy, proporcionando uma apresentação visual mais clara dos números quando exibidos.
Operações ao longo de eixos específicos
Tensores podem possuir múltiplas dimensões e, em alguns casos, é necessário realizar reduções ao longo de um eixo específico. O parâmetro axis
permite especificar qual eixo ou eixos devem ser reduzidos.
axis=0
: realiza a operação ao longo das linhas (resultando em um vetor coluna);axis=1
: realiza a operação ao longo das colunas (resultando em um vetor linha);- É possível reduzir ao longo de múltiplos eixos simultaneamente fornecendo uma lista ao parâmetro
axis
; - Quando o posto do tensor é reduzido, pode-se utilizar
keepdims=True
para manter a dimensão reduzida como 1.
Para um tensor 2D (matriz):
1234567891011121314151617181920import tensorflow as tf tensor = tf.constant([[1., 2.], [3., 4.], [5., 6.]]) # Calculate the sum of each column col_sum = tf.reduce_sum(tensor, axis=0) print("Column-wise Sum:", col_sum.numpy()) # Calculate the maximum of each row col_max = tf.reduce_max(tensor, axis=1) print("Row-wise Max:", col_max.numpy()) # Calculate the mean of the whole tensor (reduce along both directions) # Equivalent to not specifying the axis at all total_mean = tf.reduce_mean(tensor, axis=(0, 1)) print("Total Mean:", total_mean.numpy()) # Calculate the mean of the whole tensor (keeping reduced dimensions) total_mean_dim = tf.reduce_mean(tensor, axis=(0, 1), keepdims=True) print("Total Mean (saving dimensions):", total_mean_dim.numpy())
Ao executar uma operação de redução ao longo de um eixo específico, você essencialmente elimina esse eixo do tensor, agregando todos os tensores dentro desse eixo elemento por elemento. O mesmo efeito permanece para qualquer quantidade de dimensões.
Veja como isso se apresenta para um tensor 3D:
12345678910111213141516171819import tensorflow as tf tensor = tf.constant([ [[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]] ]) # Calculate the sum along axis 0 sum_0 = tf.reduce_sum(tensor, axis=0) print("Sum axis 0:\n", sum_0.numpy()) # Calculate the sum along axis 1 sum_1 = tf.reduce_sum(tensor, axis=1) print("Sum axis 1:\n", sum_1.numpy()) # Calculate the sum along axes 0 and 1 sum_0_1 = tf.reduce_sum(tensor, axis=(0, 1)) print("Sum axes 0 and 1:\n", sum_0_1.numpy())
Muitas outras operações de redução existem no TensorFlow, mas elas operam com os mesmos princípios.
Swipe to start coding
Contexto
Você é um cientista de dados em uma agência de pesquisa meteorológica. Foi fornecido a você um tensor contendo leituras meteorológicas de várias cidades ao longo de vários dias. O tensor possui a seguinte estrutura:
- Dimensão 1: representa diferentes cidades;
- Dimensão 2: representa diferentes dias.
- Cada entrada no tensor é uma tupla de
(temperature, humidity)
.
Objetivo
- Calcular a temperatura média para cada cidade ao longo de todos os dias.
- Calcular a umidade máxima registrada em todas as cidades para cada dia.
Observação
Neste tensor, o primeiro número de cada tupla representa a temperatura (em Celsius) e o segundo número representa a umidade (em porcentagem) para aquele dia e cidade.
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 what the axis parameter means in more detail?
How does keepdims=True affect the output shape?
Can you show more examples with higher-dimensional tensors?
Awesome!
Completion rate improved to 5.56
Operações de Redução
Deslize para mostrar o menu
Operações de Redução
No contexto das operações com tensores, existem diversas situações em que é necessário reduzir as dimensões dos dados, seja resumindo-os ao longo de um ou mais eixos. Por exemplo, ao trabalhar com um tensor 2D (uma matriz), uma operação de redução pode calcular um valor para cada linha ou coluna, resultando em um tensor 1D (um vetor). O TensorFlow oferece um conjunto de operações para esse propósito e, neste capítulo, exploraremos as operações de redução mais utilizadas.
Soma, Média, Máximo e Mínimo
O TensorFlow disponibiliza os seguintes métodos para esses cálculos:
tf.reduce_sum()
: calcula a soma de todos os elementos do tensor ou ao longo de um eixo específico;tf.reduce_mean()
: calcula a média dos elementos do tensor;tf.reduce_max()
: determina o valor máximo no tensor;tf.reduce_min()
: encontra o valor mínimo no tensor.
12345678910111213141516171819import tensorflow as tf tensor = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) # Calculate sum of all elements total_sum = tf.reduce_sum(tensor) print("Total Sum:", total_sum.numpy()) # Calculate mean of all elements mean_val = tf.reduce_mean(tensor) print("Mean Value:", mean_val.numpy()) # Determine the maximum value max_val = tf.reduce_max(tensor) print("Maximum Value:", max_val.numpy()) # Find the minimum value min_val = tf.reduce_min(tensor) print("Minimum Value:", min_val.numpy())
O método .numpy()
foi utilizado para converter os tensores em arrays NumPy, proporcionando uma apresentação visual mais clara dos números quando exibidos.
Operações ao longo de eixos específicos
Tensores podem possuir múltiplas dimensões e, em alguns casos, é necessário realizar reduções ao longo de um eixo específico. O parâmetro axis
permite especificar qual eixo ou eixos devem ser reduzidos.
axis=0
: realiza a operação ao longo das linhas (resultando em um vetor coluna);axis=1
: realiza a operação ao longo das colunas (resultando em um vetor linha);- É possível reduzir ao longo de múltiplos eixos simultaneamente fornecendo uma lista ao parâmetro
axis
; - Quando o posto do tensor é reduzido, pode-se utilizar
keepdims=True
para manter a dimensão reduzida como 1.
Para um tensor 2D (matriz):
1234567891011121314151617181920import tensorflow as tf tensor = tf.constant([[1., 2.], [3., 4.], [5., 6.]]) # Calculate the sum of each column col_sum = tf.reduce_sum(tensor, axis=0) print("Column-wise Sum:", col_sum.numpy()) # Calculate the maximum of each row col_max = tf.reduce_max(tensor, axis=1) print("Row-wise Max:", col_max.numpy()) # Calculate the mean of the whole tensor (reduce along both directions) # Equivalent to not specifying the axis at all total_mean = tf.reduce_mean(tensor, axis=(0, 1)) print("Total Mean:", total_mean.numpy()) # Calculate the mean of the whole tensor (keeping reduced dimensions) total_mean_dim = tf.reduce_mean(tensor, axis=(0, 1), keepdims=True) print("Total Mean (saving dimensions):", total_mean_dim.numpy())
Ao executar uma operação de redução ao longo de um eixo específico, você essencialmente elimina esse eixo do tensor, agregando todos os tensores dentro desse eixo elemento por elemento. O mesmo efeito permanece para qualquer quantidade de dimensões.
Veja como isso se apresenta para um tensor 3D:
12345678910111213141516171819import tensorflow as tf tensor = tf.constant([ [[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]] ]) # Calculate the sum along axis 0 sum_0 = tf.reduce_sum(tensor, axis=0) print("Sum axis 0:\n", sum_0.numpy()) # Calculate the sum along axis 1 sum_1 = tf.reduce_sum(tensor, axis=1) print("Sum axis 1:\n", sum_1.numpy()) # Calculate the sum along axes 0 and 1 sum_0_1 = tf.reduce_sum(tensor, axis=(0, 1)) print("Sum axes 0 and 1:\n", sum_0_1.numpy())
Muitas outras operações de redução existem no TensorFlow, mas elas operam com os mesmos princípios.
Swipe to start coding
Contexto
Você é um cientista de dados em uma agência de pesquisa meteorológica. Foi fornecido a você um tensor contendo leituras meteorológicas de várias cidades ao longo de vários dias. O tensor possui a seguinte estrutura:
- Dimensão 1: representa diferentes cidades;
- Dimensão 2: representa diferentes dias.
- Cada entrada no tensor é uma tupla de
(temperature, humidity)
.
Objetivo
- Calcular a temperatura média para cada cidade ao longo de todos os dias.
- Calcular a umidade máxima registrada em todas as cidades para cada dia.
Observação
Neste tensor, o primeiro número de cada tupla representa a temperatura (em Celsius) e o segundo número representa a umidade (em porcentagem) para aquele dia e cidade.
Solução
Obrigado pelo seu feedback!
single