使用tensorflow通过索引张量从值张量中获取值

使用tensorflow通过索引张量从值张量中获取值,tensorflow,Tensorflow,有这样一个索引张量:[[1,2,3],[1,2,3]](形状是批次*长度) 有这样一个值张量:(形状是批次*长度*深度) 如何使用tensorflow获得[[0.9,0.8,0.6],[0.9,0.8,0.6]?我不确定这是否是最佳解决方案,但它是有效的:tf.collection\n d(值,tf.expand\u dims(index,-1),batch\u dims=2) e、 g: tf.math.reduce_max(张量,轴=-1)?我遇到的问题是取一行值,并将其用作另一个矩阵的最后

有这样一个索引张量:
[[1,2,3],[1,2,3]]
(形状是批次*长度)

有这样一个值张量:(形状是批次*长度*深度)


如何使用tensorflow获得
[[0.9,0.8,0.6],[0.9,0.8,0.6]

我不确定这是否是最佳解决方案,但它是有效的:
tf.collection\n d(值,tf.expand\u dims(index,-1),batch\u dims=2)

e、 g:


tf.math.reduce_max(张量,轴=-1)
?我遇到的问题是取一行值,并将其用作另一个矩阵的最后一个维度(对应值)的索引。这不是最大值
[[[0.9,0.9,0.1,0.1],[0.9,0.1,0.8,0.1],[0.9,0.1,0.1,0.6]],
[[0.1,0.9,0.8,1],[1,2,0.8,0.1],[0.1,0.1,2,0.6]]]. 
>>> index = tf.constant([[1,2,3],[1,2,3]])
>>> values = tf.constant([[[0.9,0.9,0.1,0.1],[0.9,0.1,0.8,0.1],[0.9,0.1,0.1,0.6]],[[0.1,0.9,0.8,1],[1,2,0.8,0.1],[0.1,0.1,2,0.6]]])
>>> result = tf.gather_nd(values, tf.expand_dims(index, -1), batch_dims=2)
>>> result.eval()
array([[0.9, 0.8, 0.6],
       [0.9, 0.8, 0.6]], dtype=float32)