**tf.reduce_mean()** can allow us to compute the mean value of a tensor in tensorflow. This function is widely used in tensorflow applications. However, to use this function correctly, we must concern how this function compute the mean of a tensor and how about the result.

## Key 1. tf.reduce_mean computes the average of a tensor along axis.

(1) If we do not set axis value, tf.reduce_mean() will compute the mean of all elements in tensor.

For example:

We create a tensor with shape [5, 10, 9, 8], then compute the mean without axis.

import tensorflow as tf import numpy as np x = tf.Variable(tf.random_uniform([5, 10, 9, 8], -1, 1), name='x') avg_x_4 = tf.reduce_mean(x) init = tf.global_variables_initializer() init_local = tf.local_variables_initializer() with tf.Session() as sess: sess.run([init, init_local]) x0= (sess.run([avg_x_4])) print x0

Will get the value:

-0.008919376

(2) if we set the value of axis, tf.reduce_mean() will compute along the axis.

For example:

We set** axis = 0**, we will compute the mean like this:

import tensorflow as tf import numpy as np x = tf.Variable(tf.random_uniform([5, 10, 9, 8], -1, 1), name='x') avg_x_4 = tf.reduce_mean(x, axis = 0) init = tf.global_variables_initializer() init_local = tf.local_variables_initializer() with tf.Session() as sess: sess.run([init, init_local]) x0 = (sess.run([avg_x_4])) print x.shape

The value of shape is:

(10, 9, 8)

Here we will find an interesting thing,** the shape of tensor x is reduced.**

**Key 2. If we do not set keepdims=true, the shape of x tensor will reduce one dimension, which is the axis you set.**

For examle:

We create a [5, 10, 9, 8] tensor and compute its mean along *aix = 0, 1, 2, 3*, then we print each shape.

import tensorflow as tf import numpy as np x = tf.Variable(tf.random_uniform([5, 10, 9, 8], -1, 1), name='x') avg_x_0 = tf.reduce_mean(x, 0) avg_x_1 = tf.reduce_mean(x, 1) avg_x_2 = tf.reduce_mean(x, 2) avg_x_3 = tf.reduce_mean(x, 3) init = tf.global_variables_initializer() init_local = tf.local_variables_initializer() with tf.Session() as sess: sess.run([init, init_local]) x, x0, x1, x2, x3= (sess.run([x, avg_x_0, avg_x_1, avg_x_2, avg_x_3])) print 'x tensor shape = ' print x.shape print 'x tensor mean along axis= 0 ' print x0.shape print 'x tensor mean along axis= 1 ' print x1.shape print 'x tensor mean along axis= 2 ' print x2.shape print 'x tensor mean along axis= 3 ' print x3.shape

The output is:

x tensor shape = (5, 10, 9, 8) x tensor mean along axis= 0 (10, 9, 8) x tensor mean along axis= 1 (5, 9, 8) x tensor mean along axis= 2 (5, 10, 8) x tensor mean along axis= 3 (5, 10, 9)

We will find:

If we compute the mean of ** x** tensor along

*, the first dimension of*

**axis = 0****(5) will be removed.**

*x*Similarly, if we compute along * axis = 1, 2, 3*. the dimension of

*(10, 9, 8) will be removed.*

**x**So

*axis = 0, [5, 10, 9, 8] * will be* [10, 9, 8]*

*axis = 1, [5, 10, 9, 8]* will be *[5, 9, 8]*

*axis = 2, [5, 10, 9, 8]* will be* [5, 10, 8]*

*axis = 3, [5, 10, 9, 8]* will be* [5, 10, 9]*