Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Operações de Redução | Tensores
Introdução ao TensorFlow

bookOperaçõ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.
12345678910111213141516171819
import 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())
copy
Note
Nota

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):

1234567891011121314151617181920
import 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())
copy
Note
Nota

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:

12345678910111213141516171819
import 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())
copy
Note
Nota

Muitas outras operações de redução existem no TensorFlow, mas elas operam com os mesmos princípios.

Tarefa

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

  1. Calcular a temperatura média para cada cidade ao longo de todos os dias.
  2. 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

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 12
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 5.56

bookOperaçõ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.
12345678910111213141516171819
import 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())
copy
Note
Nota

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):

1234567891011121314151617181920
import 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())
copy
Note
Nota

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:

12345678910111213141516171819
import 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())
copy
Note
Nota

Muitas outras operações de redução existem no TensorFlow, mas elas operam com os mesmos princípios.

Tarefa

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

  1. Calcular a temperatura média para cada cidade ao longo de todos os dias.
  2. 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

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 12
single

single

some-alt