Operaçõ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.
12345678910111213141516171819202122232425import 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)
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-setf.subtract()
;- O sinal de mais
+
torna-se o sinal de menos-
; .assign_add()
torna-se.assign_sub()
.
123456789101112131415161718192021import 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)
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 atf.multiply()
;- O sinal de mais
+
corresponde ao sinal de asterisco*
.
1234567891011121314151617import 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)
Divisão
Semelhante à multiplicação, mas com tf.divide()
e o sinal /
.
1234567891011121314151617import 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)
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.
Para um entendimento mais aprofundado sobre broadcasting, consulte a página oficial da documentação do NumPy sobre este assunto.
Swipe to start coding
Dado um conjunto de matrizes, realize as seguintes operações:
- Adição in-place de uma matriz 2x2.
- Subtração utilizando o método
tf.subtract()
para uma matriz 2x3. - Multiplicação com broadcasting de uma matriz 3x2 com outra matriz 1x2.
- 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
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 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?
Awesome!
Completion rate improved to 5.56
Operaçõ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.
12345678910111213141516171819202122232425import 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)
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-setf.subtract()
;- O sinal de mais
+
torna-se o sinal de menos-
; .assign_add()
torna-se.assign_sub()
.
123456789101112131415161718192021import 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)
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 atf.multiply()
;- O sinal de mais
+
corresponde ao sinal de asterisco*
.
1234567891011121314151617import 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)
Divisão
Semelhante à multiplicação, mas com tf.divide()
e o sinal /
.
1234567891011121314151617import 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)
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.
Para um entendimento mais aprofundado sobre broadcasting, consulte a página oficial da documentação do NumPy sobre este assunto.
Swipe to start coding
Dado um conjunto de matrizes, realize as seguintes operações:
- Adição in-place de uma matriz 2x2.
- Subtração utilizando o método
tf.subtract()
para uma matriz 2x3. - Multiplicação com broadcasting de uma matriz 3x2 com outra matriz 1x2.
- 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
Obrigado pelo seu feedback!
single