Operaciones 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.
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 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 atf.subtract()
;- El signo más
+
cambia al signo menos-
; .assign_add()
cambia a.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)
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 atf.multiply()
;- El signo más
+
corresponde al signo 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)
División
Similar a la multiplicación, pero con tf.divide()
y el signo /
.
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)
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.
Para una comprensión más profunda de la difusión, puede consultar la página de documentación de NumPy sobre este tema.
Swipe to start coding
Dado un conjunto de matrices, realiza las siguientes operaciones:
- Suma en el lugar de una matriz 2x2.
- Resta utilizando el método
tf.subtract()
para una matriz 2x3. - Multiplicación con broadcasting de una matriz 3x2 con otra matriz 1x2.
- 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
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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
Operaciones 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.
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 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 atf.subtract()
;- El signo más
+
cambia al signo menos-
; .assign_add()
cambia a.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)
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 atf.multiply()
;- El signo más
+
corresponde al signo 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)
División
Similar a la multiplicación, pero con tf.divide()
y el signo /
.
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)
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.
Para una comprensión más profunda de la difusión, puede consultar la página de documentación de NumPy sobre este tema.
Swipe to start coding
Dado un conjunto de matrices, realiza las siguientes operaciones:
- Suma en el lugar de una matriz 2x2.
- Resta utilizando el método
tf.subtract()
para una matriz 2x3. - Multiplicación con broadcasting de una matriz 3x2 con otra matriz 1x2.
- 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
¡Gracias por tus comentarios!
single