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