我的问题由两个相关部分组成:
如何计算张量沿着特定轴的最大值?例如,如果我有以下张量:
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]))
但它看起来不太理想。有更好的方法吗?
假设有一个张量的
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)。
我的问题是:对于我具体的情况,什么是最好的解决方法(也许可以使用其他方法,如gather、select等)?
额外信息:我知道
x
和y
只会是二维张量!
amax = tf.argmax(y, 1)
并删除第一行。 - Sami A. Haijareduction_indices
已被弃用,请使用axis
替代。 - Binu Jasim