ValueError: Invalid reduction dimension 1 for input with 1 dimensions

14,719

Solution 1

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]

Solution 2

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

Share:
14,719
chaine09
Author by

chaine09

Updated on June 11, 2022

Comments

  • chaine09
    chaine09 almost 2 years

    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?