Opérations de Base : Arithmétique
Opérations arithmétiques
TensorFlow propose de nombreuses opérations arithmétiques pour la manipulation des tenseurs. Ces opérations, ainsi que beaucoup d'autres dans TensorFlow, prennent en charge le broadcasting, ce qui facilite l'exécution d'opérations élément par élément sur des tenseurs de formes différentes.
Addition
Pour l'addition de tenseurs, il est possible d'utiliser les méthodes tf.add()
, .assign_add()
ainsi que le signe plus +
. Le broadcasting peut également être utilisé avec le signe plus +
ou avec la méthode tf.add()
.
Le broadcasting permet de réaliser des opérations élément par élément sur des tenseurs de formes différentes mais compatibles, en étendant virtuellement le plus petit tenseur pour correspondre à la forme du plus grand.
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)
Pour la méthode en place, l’élément fondamental doit être de type Variable
mutable plutôt qu’une constante.
Soustraction
Nous avons des analogues de toutes les méthodes pour la soustraction comme pour l’addition :
tf.add()
devienttf.subtract()
;- Le signe plus
+
devient le signe moins-
; .assign_add()
devient.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)
Multiplication (Élément par élément)
Pour la multiplication, il n'existe pas de méthode en place car la multiplication matricielle produit intrinsèquement un nouvel objet. Cependant, d'autres opérations possèdent leurs équivalents :
tf.add()
correspond àtf.multiply()
;- Le signe plus
+
correspond au signe astérisque*
.
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)
Division
Similaire à la multiplication, mais avec tf.divide()
et le signe /
.
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)
Diffusion automatique (Broadcasting)
Diffusion automatique (broadcasting) désigne la manière dont les tenseurs de formes différentes sont automatiquement et implicitement traités lors des opérations arithmétiques afin qu’ils apparaissent comme s’ils avaient la même forme. Cela permet d’effectuer des opérations sur des tenseurs de tailles différentes sans avoir à les redimensionner explicitement au préalable.
Pour approfondir la notion de diffusion automatique (broadcasting), vous pouvez consulter la page officielle de la documentation NumPy à ce sujet.
Swipe to start coding
Étant donné un ensemble de matrices, effectuez les opérations suivantes :
- Addition en place d'une matrice 2x2.
- Soustraction à l'aide de la méthode
tf.subtract()
pour une matrice 2x3. - Multiplication avec diffusion (broadcasting) d'une matrice 3x2 avec une autre matrice 1x2.
- Division avec diffusion entre deux matrices, l'une de taille 2x3 et l'autre 2x1.
Remarque
Observez le comportement de diffusion lors des opérations de multiplication et de division. Pour la multiplication, cela revient à multiplier
[[1, 2], [3, 4], [5, 6]]
par[[2, 4], [2, 4], [2, 4]]
. Pour la division, cela revient à diviser[[2, 4, 6], [4, 8, 12]]
par[[2, 2, 2], [4, 4, 4]]
.Dans le premier cas, la diffusion étend la matrice le long du 0ème axe (premier paramètre de la forme), tandis que dans le second cas, la matrice est étendue le long du 1er axe (second paramètre de la forme). Cela dépend de la forme des matrices.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
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
Opérations de Base : Arithmétique
Glissez pour afficher le menu
Opérations arithmétiques
TensorFlow propose de nombreuses opérations arithmétiques pour la manipulation des tenseurs. Ces opérations, ainsi que beaucoup d'autres dans TensorFlow, prennent en charge le broadcasting, ce qui facilite l'exécution d'opérations élément par élément sur des tenseurs de formes différentes.
Addition
Pour l'addition de tenseurs, il est possible d'utiliser les méthodes tf.add()
, .assign_add()
ainsi que le signe plus +
. Le broadcasting peut également être utilisé avec le signe plus +
ou avec la méthode tf.add()
.
Le broadcasting permet de réaliser des opérations élément par élément sur des tenseurs de formes différentes mais compatibles, en étendant virtuellement le plus petit tenseur pour correspondre à la forme du plus grand.
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)
Pour la méthode en place, l’élément fondamental doit être de type Variable
mutable plutôt qu’une constante.
Soustraction
Nous avons des analogues de toutes les méthodes pour la soustraction comme pour l’addition :
tf.add()
devienttf.subtract()
;- Le signe plus
+
devient le signe moins-
; .assign_add()
devient.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)
Multiplication (Élément par élément)
Pour la multiplication, il n'existe pas de méthode en place car la multiplication matricielle produit intrinsèquement un nouvel objet. Cependant, d'autres opérations possèdent leurs équivalents :
tf.add()
correspond àtf.multiply()
;- Le signe plus
+
correspond au signe astérisque*
.
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)
Division
Similaire à la multiplication, mais avec tf.divide()
et le signe /
.
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)
Diffusion automatique (Broadcasting)
Diffusion automatique (broadcasting) désigne la manière dont les tenseurs de formes différentes sont automatiquement et implicitement traités lors des opérations arithmétiques afin qu’ils apparaissent comme s’ils avaient la même forme. Cela permet d’effectuer des opérations sur des tenseurs de tailles différentes sans avoir à les redimensionner explicitement au préalable.
Pour approfondir la notion de diffusion automatique (broadcasting), vous pouvez consulter la page officielle de la documentation NumPy à ce sujet.
Swipe to start coding
Étant donné un ensemble de matrices, effectuez les opérations suivantes :
- Addition en place d'une matrice 2x2.
- Soustraction à l'aide de la méthode
tf.subtract()
pour une matrice 2x3. - Multiplication avec diffusion (broadcasting) d'une matrice 3x2 avec une autre matrice 1x2.
- Division avec diffusion entre deux matrices, l'une de taille 2x3 et l'autre 2x1.
Remarque
Observez le comportement de diffusion lors des opérations de multiplication et de division. Pour la multiplication, cela revient à multiplier
[[1, 2], [3, 4], [5, 6]]
par[[2, 4], [2, 4], [2, 4]]
. Pour la division, cela revient à diviser[[2, 4, 6], [4, 8, 12]]
par[[2, 2, 2], [4, 4, 4]]
.Dans le premier cas, la diffusion étend la matrice le long du 0ème axe (premier paramètre de la forme), tandis que dans le second cas, la matrice est étendue le long du 1er axe (second paramètre de la forme). Cela dépend de la forme des matrices.
Solution
Merci pour vos commentaires !
single