Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Operaciones Básicas: Aritmética | Tensores
Introducción a TensorFlow

bookOperaciones Básicas: Aritmética

Operaciones aritméticas

TensorFlow proporciona numerosas operaciones aritméticas para la manipulación de tensores. Estas operaciones y muchas otras en TensorFlow admiten broadcasting, lo que facilita realizar operaciones elemento a elemento en tensores de diferentes formas.

Suma

Para la suma de tensores se pueden utilizar los métodos tf.add(), .assign_add() y el signo más +. También se puede emplear broadcasting con el signo más + o con el método tf.add().

El broadcasting permite realizar operaciones elemento a elemento en tensores de formas diferentes pero compatibles, expandiendo virtualmente el tensor más pequeño para que coincida con la forma del tensor más grande.

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 el método inplace, el elemento fundamental debe ser de tipo Variable mutable en lugar de una constante.

Sustracción

Existen análogos de todos los métodos para la sustracción como para la suma:

  • tf.add() cambia a tf.subtract();
  • El signo más + cambia al signo menos -;
  • .assign_add() cambia a .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

Multiplicación (Elemento a elemento)

Para la multiplicación, no existe un método inplace ya que la multiplicación de matrices genera inherentemente un nuevo objeto. Sin embargo, otras operaciones tienen sus equivalentes:

  • tf.add() corresponde a tf.multiply();
  • El signo más + corresponde al signo 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

División

Similar a la multiplicación, pero con tf.divide() y el signo /.

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

Difusión

Difusión es el término utilizado para describir cómo los tensores con diferentes formas son tratados automática e implícitamente durante las operaciones aritméticas para que parezca que tienen la misma forma. Permite realizar operaciones en tensores de diferentes tamaños sin necesidad de redimensionarlos explícitamente.

Note
Estudiar más

Para una comprensión más profunda de la difusión, puede consultar la página de documentación de NumPy sobre este tema.

Tarea

Swipe to start coding

Dado un conjunto de matrices, realiza las siguientes operaciones:

  1. Suma en el lugar de una matriz 2x2.
  2. Resta utilizando el método tf.subtract() para una matriz 2x3.
  3. Multiplicación con broadcasting de una matriz 3x2 con otra matriz 1x2.
  4. División con broadcasting entre dos matrices, una de tamaño 2x3 y la otra 2x1.

Nota

Observa el comportamiento de broadcasting en las operaciones de multiplicación y división. En la multiplicación, es como multiplicar [[1, 2], [3, 4], [5, 6]] con [[2, 4], [2, 4], [2, 4]]. En la división, es como dividir [[2, 4, 6], [4, 8, 12]] por [[2, 2, 2], [4, 4, 4]].

En el primer caso, el broadcasting expande la matriz a lo largo del eje 0 (primer parámetro de la forma), mientras que en el segundo caso, la matriz se expande a lo largo del eje 1 (segundo parámetro de la forma). Esto depende de la forma de las matrices.

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 8
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

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

bookOperaciones Básicas: Aritmética

Desliza para mostrar el menú

Operaciones aritméticas

TensorFlow proporciona numerosas operaciones aritméticas para la manipulación de tensores. Estas operaciones y muchas otras en TensorFlow admiten broadcasting, lo que facilita realizar operaciones elemento a elemento en tensores de diferentes formas.

Suma

Para la suma de tensores se pueden utilizar los métodos tf.add(), .assign_add() y el signo más +. También se puede emplear broadcasting con el signo más + o con el método tf.add().

El broadcasting permite realizar operaciones elemento a elemento en tensores de formas diferentes pero compatibles, expandiendo virtualmente el tensor más pequeño para que coincida con la forma del tensor más grande.

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 el método inplace, el elemento fundamental debe ser de tipo Variable mutable en lugar de una constante.

Sustracción

Existen análogos de todos los métodos para la sustracción como para la suma:

  • tf.add() cambia a tf.subtract();
  • El signo más + cambia al signo menos -;
  • .assign_add() cambia a .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

Multiplicación (Elemento a elemento)

Para la multiplicación, no existe un método inplace ya que la multiplicación de matrices genera inherentemente un nuevo objeto. Sin embargo, otras operaciones tienen sus equivalentes:

  • tf.add() corresponde a tf.multiply();
  • El signo más + corresponde al signo 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

División

Similar a la multiplicación, pero con tf.divide() y el signo /.

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

Difusión

Difusión es el término utilizado para describir cómo los tensores con diferentes formas son tratados automática e implícitamente durante las operaciones aritméticas para que parezca que tienen la misma forma. Permite realizar operaciones en tensores de diferentes tamaños sin necesidad de redimensionarlos explícitamente.

Note
Estudiar más

Para una comprensión más profunda de la difusión, puede consultar la página de documentación de NumPy sobre este tema.

Tarea

Swipe to start coding

Dado un conjunto de matrices, realiza las siguientes operaciones:

  1. Suma en el lugar de una matriz 2x2.
  2. Resta utilizando el método tf.subtract() para una matriz 2x3.
  3. Multiplicación con broadcasting de una matriz 3x2 con otra matriz 1x2.
  4. División con broadcasting entre dos matrices, una de tamaño 2x3 y la otra 2x1.

Nota

Observa el comportamiento de broadcasting en las operaciones de multiplicación y división. En la multiplicación, es como multiplicar [[1, 2], [3, 4], [5, 6]] con [[2, 4], [2, 4], [2, 4]]. En la división, es como dividir [[2, 4, 6], [4, 8, 12]] por [[2, 2, 2], [4, 4, 4]].

En el primer caso, el broadcasting expande la matriz a lo largo del eje 0 (primer parámetro de la forma), mientras que en el segundo caso, la matriz se expande a lo largo del eje 1 (segundo parámetro de la forma). Esto depende de la forma de las matrices.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 8
single

single

some-alt