Tensorflow add operation is common used in tensorflow application. However, it is hard to understand when it adds different dimensinal tensors. In this tutorial, we will discuss this topic with some examples to help you understand it.
A 2 * 3 tensor adds a scalar
We will create a tensor with (2, 3) shape, then add a scalar.
import tensorflow as tf import numpy as np x = tf.Variable(np.array([[1, 2, 3],[4, 5, 6]]), dtype = tf.float32) z = 2 _sum = x + z
where x is a 2*3 tensor, z is a scalar 2. How about the result?
init = tf.global_variables_initializer() init_local = tf.local_variables_initializer() with tf.Session() as sess: sess.run([init, init_local]) print(sess.run([_sum]))
The result is:
[array([[ 3., 4., 5.], [ 6., 7., 8.]], dtype=float32)]
From the result, we will find: if a tensor adds a scalar, each element in this tensor will add this scalar.
A 2 * 3 tensor adds a (1,) tensor
Here is an example:
x = tf.Variable(np.array([[1, 2, 3],[4, 5, 6]]), dtype = tf.float32) y = tf.Variable(np.array([1, 1, 1]), dtype = tf.float32) _sum_2 = x + y
where x is 2* 3 shape, y is (1, ) shape, the result is:
[array([[ 2., 3., 4.], [ 5., 6., 7.]], dtype=float32)]
A tensor x will add a (1, ) tensor y, which means the elements of x on last axis add y
A 2 * 3 * 2 tensor add 3 * 2 tensor
x = tf.Variable(np.array([[[1, 2], [2, 3], [3, 4]],[[5, 6], [6, 7], [7, 8]]]), dtype = tf.float32) y = tf.Variable(np.array([[1, 2],[2, 1],[1, 1]]), dtype = tf.float32) _sum = x + y
where x is 2*3*2 shape, y is 3*2 shape, the result is:
[array([[[ 2., 4.], [ 4., 4.], [ 4., 5.]], [[ 6., 8.], [ 8., 8.], [ 8., 9.]]], dtype=float32)]
The last two shape of x is the same to y, so we will add y on axis = 0.
A 2 * 3 * 2 tensor add 2* 1 * 2 tensor
x = tf.Variable(np.array([[[1, 2], [2, 3], [3, 4]],[[5, 6], [6, 7], [7, 8]]]), dtype = tf.float32) y = tf.Variable(np.array([[[1, 1]],[[2, 2]]]), dtype = tf.float32) _sum = x + y
where y is 2*1*2, x is 2*3*2, the result is:
[array([[[ 2., 3.], [ 3., 4.], [ 4., 5.]], [[ 7., 8.], [ 8., 9.], [ 9., 10.]]], dtype=float32)]
As the first axis of x is same to y, which is 2. So x + y means we will add 3*2 tensor and 1*2 tensor on axis = 0.