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

Suggested prompts:

Can you explain more about how broadcasting works in TensorFlow?

What are some common errors when using arithmetic operations with tensors?

Can you show examples of broadcasting with tensors of different shapes?

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