ValueError:具有1个维度的输入的缩减维度1无效

时间:2017-03-31 00:14:15

标签: python matrix tensorflow

tf.reduce_mean()函数以一种 axis 参数中引用的索引的方式对数组的元素求和。

在以下代码中:

import tensorflow as tf

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

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

所以对于这行

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

输出为:6

为了生成相同的输出,我需要以减少列数的方式对所有元素求和。所以我需要设置 = 1对吗?

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

但是我收到了一个错误:

  

ValueError:1维输入

的缩小维度1无效

但是如果我设置axis = 0,我得到6.为什么会这样?

2 个答案:

答案 0 :(得分:2)

您得到的错误是ValueError: Invalid reduction dimension 1 for input with 1 dimensions。这几乎意味着如果你不能减少一维张量的维数。

对于N x M张量,设置轴= 0将返回1xM张量,设置轴= 1将返回Nx1张量。请考虑tensorflow文档中的以下示例:

# '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]

答案 1 :(得分:0)

“请注意,选择张量中最后一个轴的一种方法是使用负索引(axis = -1)”