当前位置: 首页 > 面试题库 >

TensorFlow:沿轴的张量的最大值

储仲渊
2023-03-14
问题内容

我的问题分为两个部分:

  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]

我知道有atf.argmax和a 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]))

但是它看起来并不理想。有一个更好的方法吗?

  1. 给定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)。

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

附加信息:我知道x并且y仅将是二维张量!


问题答案:

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

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)"

如果使用计算argmax
tf.argmax(),可以获取从不同的张量的值y通过压平y使用tf.reshape(),转换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)"


 类似资料:
  • 问题内容: 我想在中复制以下代码。例如,我想为所有先前具有值的张量索引分配a 。 如果我在其中编写类似的代码,则会出现以下错误。 方括号中的条件应为。 有没有一种方法可以实现这种“条件赋值”(因为缺少更好的名称)? 问题答案: TensorFlow API中提供了几种比较运算符。 但是,在直接操纵张量时,没有什么等效于简洁的NumPy语法。你必须要使用个人的,和运营商执行相同的操作。 您的NumP

  • 问题内容: 我有一个二维NumPy数组。我知道如何获取轴上的最大值: 如何获得最大元素的索引?我想代替输出。 问题答案:

  • 问题内容: 我是TensorFlow的新手。在阅读现有文档时,我发现该术语确实令人困惑。因此,我需要澄清以下问题: 和, vs. ,’张量’vs.之间是什么关系? 它们都是张量类型吗? 问题答案: TensorFlow没有一流的Tensor对象,这意味着在运行时执行的基础图中没有任何概念。相反,该图由相互连接的op节点组成,代表操作。操作分配内存的输出,这些都可以在端点上,等等,你可以认为这些端点

  • 我正在为我的游戏设计一个区块旋转组件,我遇到了一个我无法理解的小问题。基本上,我希望能够沿所有三个轴旋转网格组件。玩家一次只能旋转一个轴,旋转90度或-90度。我还希望玩家始终根据世界的X、Y和Z轴旋转网格,而不是块的相对轴,它将随着旋转而改变。我如何做到这一点? 无旋转的网格: 网格沿X轴逆时针旋转90度: 这里的问题是,如果我想沿着Y轴旋转块,相反,它将沿着Z轴旋转块,因为块现在被旋转。我如何

  • 在v2.0-beta中,是否有一种方法可以配置与该x位置对应的工具提示,以便在悬停在轴上该点上方的任何位置时显示?例如,此处显示的功能:https://blockchain.info/charts/market-price 水平描摹线条时,将显示与距 y 轴的距离相对应的工具提示。

  • 问题内容: Tensorflow中的图形对象具有一种称为“ get_tensor_by_name(name)”的方法。反正有没有得到有效张量名称的列表? 如果不是,那么有人从这里知道预训练模型inception-v3的有效名称吗?从他们的示例pool_3开始,它是一个有效的张量,但是所有这些列表都很好。我看了一下所提到的文件,其中一些层似乎与表1中的大小相对应,但并非全部。 问题答案: 本文没有准