Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Operações Básicas: Aritmética | Tensores
Introdução ao TensorFlow

bookOperações Básicas: Aritmética

Operações Aritméticas

O TensorFlow oferece diversas operações aritméticas para manipulação de tensores. Essas operações, assim como muitas outras no TensorFlow, suportam broadcasting, facilitando a realização de operações elemento a elemento em tensores de diferentes formas.

Adição

Para a adição de tensores, é possível utilizar os métodos tf.add(), .assign_add() e o sinal de mais +. Também é possível utilizar broadcasting tanto com o sinal de mais + quanto com o método tf.add().

O broadcasting permite realizar operações elemento a elemento em tensores de formas diferentes, mas compatíveis, expandindo virtualmente o tensor menor para corresponder à forma do tensor maior.

12345678910111213141516171819202122232425
import tensorflow as tf # Create two tensors a = tf.Variable([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise addition with TF method c1 = tf.add(a, b) # Same as `c1` calculation, but shorter c2 = a + b # Using broadcasting; # Same as `[1, 2, 3] + [3, 3, 3]` c3 = a + 3 # The most efficient one; # Changes the object inplace without creating a new one; # Result is the same as for `c1` and `c2`. a.assign_add(b) print('TF method:\t', c1) print('Plus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
copy
Note
Nota

Para o método inplace, o elemento fundamental deve ser do tipo Variable mutável em vez de uma constante.

Subtração

Existem análogos de todos os métodos para subtração assim como para adição:

  • tf.add() torna-se tf.subtract();
  • O sinal de mais + torna-se o sinal de menos -;
  • .assign_add() torna-se .assign_sub().
123456789101112131415161718192021
import tensorflow as tf # Create two tensors a = tf.Variable([4, 5, 6]) b = tf.constant([1, 2, 3]) # Perform element-wise substraction c1 = tf.subtract(a, b) c2 = a - b # Using broadcasting; # Same as `[4, 5, 6] - [3, 3, 3]` c3 = a - 3 # Inplace substraction a.assign_sub(b) print('TF method:\t', c1) print('Minus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
copy

Multiplicação (Elemento a elemento)

Para multiplicação, não existe um método inplace, pois a multiplicação de matrizes resulta inerentemente em um novo objeto. No entanto, outras operações possuem seus equivalentes:

  • tf.add() corresponde a tf.multiply();
  • O sinal de mais + corresponde ao sinal de asterisco *.
1234567891011121314151617
import tensorflow as tf # Create two tensors a = tf.constant([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise multiplication c1 = tf.multiply(a, b) c2 = a * b # Using broadcasting; # Same as `[1, 2, 3] * [3, 3, 3]` c3 = a * 3 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
copy

Divisão

Semelhante à multiplicação, mas com tf.divide() e o sinal /.

1234567891011121314151617
import tensorflow as tf # Create two tensors a = tf.constant([6, 8, 10]) b = tf.constant([2, 4, 5]) # Perform element-wise division c1 = tf.divide(a, b) c2 = a / b # Using broadcasting; # Same as `[6, 8, 10] / [2, 2, 2]` c3 = a / 2 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
copy

Broadcasting

Broadcasting é o termo utilizado para descrever como tensores com diferentes formas são tratados automática e implicitamente durante operações aritméticas, de modo que parecem ter o mesmo formato. Isso permite que operações sejam realizadas em tensores de tamanhos diferentes sem a necessidade de redimensioná-los explicitamente.

Note
Estude Mais

Para um entendimento mais aprofundado sobre broadcasting, consulte a página oficial da documentação do NumPy sobre este assunto.

Tarefa

Swipe to start coding

Dado um conjunto de matrizes, realize as seguintes operações:

  1. Adição in-place de uma matriz 2x2.
  2. Subtração utilizando o método tf.subtract() para uma matriz 2x3.
  3. Multiplicação com broadcasting de uma matriz 3x2 com outra matriz 1x2.
  4. Divisão com broadcasting entre duas matrizes, uma de tamanho 2x3 e outra 2x1.

Nota

Observe o comportamento de broadcasting nas operações de multiplicação e divisão. Na multiplicação, é como multiplicar [[1, 2], [3, 4], [5, 6]] com [[2, 4], [2, 4], [2, 4]]. Na divisão, é como dividir [[2, 4, 6], [4, 8, 12]] por [[2, 2, 2], [4, 4, 4]].

No primeiro caso, o broadcasting expande a matriz ao longo do eixo 0 (primeiro parâmetro do shape), enquanto no segundo caso, a matriz é expandida ao longo do eixo 1 (segundo parâmetro do shape). Isso depende do formato das matrizes.

Solução

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 8
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

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

close

Awesome!

Completion rate improved to 5.56

bookOperações Básicas: Aritmética

Deslize para mostrar o menu

Operações Aritméticas

O TensorFlow oferece diversas operações aritméticas para manipulação de tensores. Essas operações, assim como muitas outras no TensorFlow, suportam broadcasting, facilitando a realização de operações elemento a elemento em tensores de diferentes formas.

Adição

Para a adição de tensores, é possível utilizar os métodos tf.add(), .assign_add() e o sinal de mais +. Também é possível utilizar broadcasting tanto com o sinal de mais + quanto com o método tf.add().

O broadcasting permite realizar operações elemento a elemento em tensores de formas diferentes, mas compatíveis, expandindo virtualmente o tensor menor para corresponder à forma do tensor maior.

12345678910111213141516171819202122232425
import tensorflow as tf # Create two tensors a = tf.Variable([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise addition with TF method c1 = tf.add(a, b) # Same as `c1` calculation, but shorter c2 = a + b # Using broadcasting; # Same as `[1, 2, 3] + [3, 3, 3]` c3 = a + 3 # The most efficient one; # Changes the object inplace without creating a new one; # Result is the same as for `c1` and `c2`. a.assign_add(b) print('TF method:\t', c1) print('Plus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
copy
Note
Nota

Para o método inplace, o elemento fundamental deve ser do tipo Variable mutável em vez de uma constante.

Subtração

Existem análogos de todos os métodos para subtração assim como para adição:

  • tf.add() torna-se tf.subtract();
  • O sinal de mais + torna-se o sinal de menos -;
  • .assign_add() torna-se .assign_sub().
123456789101112131415161718192021
import tensorflow as tf # Create two tensors a = tf.Variable([4, 5, 6]) b = tf.constant([1, 2, 3]) # Perform element-wise substraction c1 = tf.subtract(a, b) c2 = a - b # Using broadcasting; # Same as `[4, 5, 6] - [3, 3, 3]` c3 = a - 3 # Inplace substraction a.assign_sub(b) print('TF method:\t', c1) print('Minus sign:\t', c2) print('Broadcasting:\t', c3) print('Inplace change:\t', a)
copy

Multiplicação (Elemento a elemento)

Para multiplicação, não existe um método inplace, pois a multiplicação de matrizes resulta inerentemente em um novo objeto. No entanto, outras operações possuem seus equivalentes:

  • tf.add() corresponde a tf.multiply();
  • O sinal de mais + corresponde ao sinal de asterisco *.
1234567891011121314151617
import tensorflow as tf # Create two tensors a = tf.constant([1, 2, 3]) b = tf.constant([4, 5, 6]) # Perform element-wise multiplication c1 = tf.multiply(a, b) c2 = a * b # Using broadcasting; # Same as `[1, 2, 3] * [3, 3, 3]` c3 = a * 3 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
copy

Divisão

Semelhante à multiplicação, mas com tf.divide() e o sinal /.

1234567891011121314151617
import tensorflow as tf # Create two tensors a = tf.constant([6, 8, 10]) b = tf.constant([2, 4, 5]) # Perform element-wise division c1 = tf.divide(a, b) c2 = a / b # Using broadcasting; # Same as `[6, 8, 10] / [2, 2, 2]` c3 = a / 2 print('TF method:\t', c1) print('Asterisk sign:\t', c2) print('Broadcasting:\t', c3)
copy

Broadcasting

Broadcasting é o termo utilizado para descrever como tensores com diferentes formas são tratados automática e implicitamente durante operações aritméticas, de modo que parecem ter o mesmo formato. Isso permite que operações sejam realizadas em tensores de tamanhos diferentes sem a necessidade de redimensioná-los explicitamente.

Note
Estude Mais

Para um entendimento mais aprofundado sobre broadcasting, consulte a página oficial da documentação do NumPy sobre este assunto.

Tarefa

Swipe to start coding

Dado um conjunto de matrizes, realize as seguintes operações:

  1. Adição in-place de uma matriz 2x2.
  2. Subtração utilizando o método tf.subtract() para uma matriz 2x3.
  3. Multiplicação com broadcasting de uma matriz 3x2 com outra matriz 1x2.
  4. Divisão com broadcasting entre duas matrizes, uma de tamanho 2x3 e outra 2x1.

Nota

Observe o comportamento de broadcasting nas operações de multiplicação e divisão. Na multiplicação, é como multiplicar [[1, 2], [3, 4], [5, 6]] com [[2, 4], [2, 4], [2, 4]]. Na divisão, é como dividir [[2, 4, 6], [4, 8, 12]] por [[2, 2, 2], [4, 4, 4]].

No primeiro caso, o broadcasting expande a matriz ao longo do eixo 0 (primeiro parâmetro do shape), enquanto no segundo caso, a matriz é expandida ao longo do eixo 1 (segundo parâmetro do shape). Isso depende do formato das matrizes.

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 8
single

single

some-alt