chaine09
chaine09

Reputation: 77

ValueError: Invalid reduction dimension 1 for input with 1 dimensions

The tf.reduce_mean() function sums the elements of an array in such a way that the index referred to in the axis argument.

In the following code:

import tensorflow as tf

x = tf.Variable([1, 2, 3])
init = tf.global_variables_initializer()

sess = tf.Session()
sess.run(init)

So for the line

print(sess.run(tf.reduce_sum(x)))

The output is: 6

In order to generate the same output, I need to sum all the elements in a way to reduce the number of columns. So I need to set axis = 1 right?

print(sess.run(tf.reduce_sum(x, 1)))

But I get an error:

ValueError: Invalid reduction dimension 1 for input with 1 dimensions

But if I set axis = 0, I get 6. Why is this?

Upvotes: 4

Views: 20823

Answers (2)

What Love
What Love

Reputation: 21

"Note that one way to choose the last axis in a tensor is to use negative indexing (axis=-1)"

Upvotes: 2

lordingtar
lordingtar

Reputation: 1052

The error you get is ValueError: Invalid reduction dimension 1 for input with 1 dimensions. This pretty much means that if you can't reduce the dimension of a 1-dimensional tensor.

For an N x M tensor, setting axis = 0 will return an 1xM tensor, and setting axis = 1 will return a Nx1 tensor. Consider the following example from the tensorflow documentation:

# 'x' is [[1, 1, 1]
#         [1, 1, 1]]
tf.reduce_sum(x) ==> 6
tf.reduce_sum(x, 0) ==> [2, 2, 2]
tf.reduce_sum(x, 1) ==> [3, 3]

Upvotes: 6

Related Questions