Tensor axis and shape are very important when we are computing in tensorflow. What are relationship between them? In this tutorial, we will discuss.
What is tensor axis?
The tensor axis describes the demension of a tensor.
For example, if a tensor is a 4-dimension, which means its axis = [0, 1, 2, 3]
Set dimension of a tensor is n. The axis of a tensor will be axis = [0, 1, 2, …, n-1]
What is tensor shape?
Tensor shape indicates the element size on each axis or demension.
For example, if the shape of a tensor is [ 2, 3, 4], which means this tensor axis = [0, 1, 2] and there are 2 elements on axis = 0, 3 elements on axis = 2 and 4 elements on axis = 3.
The relation of tensor axis and shape.
Suppose a tensor shape is: shape = [x, y, z, …], its axis = [0, 1, 2, …]
Understand the relation between axis and shape, we will can understand aixs parameter in some tensorflow functions.
For example, tf.reduce_sum() will return different result on different axis.
Here is an example.
Create a 3*4 tensor
import tensorflow as tf import numpy as np #w=shape(3,4) w = tf.Variable(np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]]), dtype = tf.float32)
Sum this tensor on different axis
sum on axis = 0
sum_1 = tf.reduce_sum(w, axis = 0)
The result will be:
array([ 15., 18., 21., 24.], dtype=float32)
Why? Because shape = [3, 4], there are 3 elements on axis = 0.
Which sums
[1, 2, 3, 4] + [5, 6, 7, 8] + [9, 10, 11, 12] = [15, 18, 21, 24]
Sum tensor on axis = 1
sum_2 = tf.reduce_sum(w, axis = 1)
The result will be:
array([ 10., 26., 42.], dtype=float32)
Because there are 4 elements on axis = 1, which means
sum([1, 2, 3, 4]) = 1 + 2 + 3 + 4 = 10
sum([5, 6, 7, 8]) = 5 + 6 + 7 + 8 = 26
sum([9, 10, 11, 12]) = 9 + 10 + 11 + 12 = 42