【发布时间】:2018-01-26 05:58:23
【问题描述】:
我发现在 n 维数组中获得最大张量是不可能的,即使通过对张量求和并使用gather 或gather_nd。
最大张量是指总和最高的权重集。
我有一个形状为 (-1, 4, 30, 256) 的张量,其中 256 是权重。
我需要获取每个 (-1, 0, 30)、(-1, 1, 30)、(-1, 2, 30) 和 (-1, 3, 30) 的最大权重集,所以在第二维的每个张量下。
理想情况下,这将导致 (-1, 4, 256) 张量。
reduce_max 和任何其他 max 函数只会返回最后一个维度内的最大元素值,而不是维度本身中的最大张量(即总和最高的权重集)。我试过了:
p1 = tf.reduce_sum(tensor, axis=3) # (-1, 4, 30)
p2 = tf.argmax(p1, 2) # (-1, 4)
它为第 3 维提供了适当的索引值:
[[0, 2, 2, 0],
[0, 1, 3, 0],
...
但在上面运行 tf.gather 或 tf.gather_nd 不起作用,即使事先拆分我的数据并使用不同的轴。
此外,如果我手动使用gather_nd,我可以获得适当的索引,例如:
tf.gather_nd(out5, [[0,0,0], [0,1,2], [0,2,2], [0,3,0], [1,0,0], [1,1,2], [1,2,2], [1,3,1]])
但由于我们使用的是未知第一维的张量流变量,我无法构建这些索引。
我已经搜索了相关的解决方法,但没有发现任何适用的方法。
谁能告诉我如何做到这一点?谢谢!
编辑澄清:
权重的最大张量将是总和最大的权重集:
[[ 1, 2, 3], [0, 0, 2], [1, 0, 2]] would be [1, 2, 3]
【问题讨论】:
-
最大张量是什么意思?你是指最大单项的张量,还是最大长度的张量,还是别的什么?
-
具有最高总和值的权重(张量)的集合,例如权重 [[ 1, 2, 3], [0, 1, 2], [2, 0, 2]]为 [1, 2, 3]
标签: tensorflow max tensor