【问题标题】:ValueError: Invalid reduction dimension 1 for input with 1 dimensionsValueError:1维输入的无效缩减维1
【发布时间】:2017-03-31 00:14:14
【问题描述】:

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

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

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

但我得到一个错误:

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

但是如果我设置axis = 0,我得到6。这是为什么呢?

【问题讨论】:

    标签: python matrix tensorflow


    【解决方案1】:

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

    对于 N x M 张量,设置axis = 0 将返回一个1xM 张量,设置axis = 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]
    

    【讨论】:

    • 因为它是一个行向量?但是当我将轴参数更改为 0(行)时,我得到 6。这是为什么呢?
    • 正如lordingtar 上面解释的那样,在设置axis=1 时,您说TF 沿1-D 减少,这显然会引发错误。在我看来,您一方面误解了什么是“行”,而另一方面又误解了什么是“列”。
    【解决方案2】:

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

    【讨论】:

    • 您好,欢迎来到 Stack Overflow!您能否详细说明,将此答案更多地与用户的问题联系起来?似乎在问题中他们的张量是一维数组。如果它是 2D 或更大的数组,您的回答会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    相关资源
    最近更新 更多