gpt4 book ai didi

python - TensorFlow:沿轴的张量的最大值

转载 作者:IT老高 更新时间:2023-10-28 22:10:53 26 4
gpt4 key购买 nike

我的问题是两个相关的部分:

  1. 如何计算张量某个轴的最大值?例如,如果我有

    x = tf.constant([[1,220,55],[4,3,-1]])

    我想要类似的东西

    x_max = tf.max(x, axis=1)
    print sess.run(x_max)

    output: [220,4]

    我知道有一个 tf.argmax 和一个 tf.maximum,但都没有给出沿单个张量轴的最大值。现在我有一个解决方法:

    x_max = tf.slice(x, begin=[0,0], size=[-1,1])
    for a in range(1,2):
    x_max = tf.maximum(x_max , tf.slice(x, begin=[0,a], size=[-1,1]))

    但它看起来不太理想。有没有更好的方法来做到这一点?

  2. 给定一个张量的 argmax 的索引,我如何使用这些索引索引另一个张量?使用上面的 x 示例,我该如何执行以下操作:

    ind_max = tf.argmax(x, dimension=1)    #output is [1,0]
    y = tf.constant([[1,2,3], [6,5,4])
    y_ = y[:, ind_max] #y_ should be [2,6]

    我知道切片和最后一行一样,在 TensorFlow 中还不存在 (#206)。

    我的问题是:对于我的具体情况,最好的解决方法是什么(可能使用其他方法,如收集、选择等)?

    附加信息:我知道 xy 将只是二维张量!

最佳答案

tf.reduce_max()运算符正好提供了这个功能。默认情况下,它计算给定张量的全局最大值,但您可以指定 reduction_indices 列表,其含义与 NumPy 中的 axis 相同。完成您的示例:

x = tf.constant([[1, 220, 55], [4, 3, -1]])
x_max = tf.reduce_max(x, reduction_indices=[1])
print sess.run(x_max) # ==> "array([220, 4], dtype=int32)"

如果您使用 tf.argmax() 计算 argmax ,您可以通过使用 tf.reshape() 展平 y 从不同的张量 y 获取值,将 argmax 索引转换为向量索引,如下所示,并使用 tf.gather()提取适当的值:

ind_max = tf.argmax(x, dimension=1)
y = tf.constant([[1, 2, 3], [6, 5, 4]])

flat_y = tf.reshape(y, [-1]) # Reshape to a vector.

# N.B. Handles 2-D case only.
flat_ind_max = ind_max + tf.cast(tf.range(tf.shape(y)[0]) * tf.shape(y)[1], tf.int64)

y_ = tf.gather(flat_y, flat_ind_max)

print sess.run(y_) # ==> "array([2, 6], dtype=int32)"

关于python - TensorFlow:沿轴的张量的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34987509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com