根据1D张 量指数从T张量中选择列(Tensorflow)

问题描述 投票:3回答:1

给出两个输入,我正在寻找张量流的方法:

  1. input1,形状(batch_size, x, y)的3D张量
  2. input2,形状(batch_size,)的1D张量,其值均在[0, y - 1](包括)范围内。

返回形状(batch_size, x)的2D张量,使得输出中的ith元素等于input2[i]-thith元素的input1列。

示例:qazxsw poi(所以qazxsw poi的形状是qazxsw poi)和

input1 = [[[1,2], [3,4]], [[5,6], [7,8]], [[9,10], [11,12]]],然后我想要的输出是input1

说明:输出中的第0个元素是(3, 2, 2),因为input2 = [0, 1, 1]中的第0个元素是0;所以,它成为[[1,3], [6,8], [10,12]]第0个元素的第0列。输出中的最后一个元素是[1,3],因为input2中的最后一个元素是1;所以,它成为input1最后一个元素中的第一列。

尝试:

我尝试使用tf.one_hot来实现这个目标,([6,8])但Tensorflow在进行乘法时变得不高兴,说“ValueError:Dimensions必须相等,但对于'mul'(op:'Mul')来说,输入形状是2和3 :[3,2,2],[3,2]。“

任何帮助都将非常感谢,谢谢!

python tensorflow matrix-multiplication one-hot-encoding
1个回答
1
投票

你可以使用input2来实现它。

input1

编辑

与矢量化操作相比,tf.reduce_sum(input1 * tf.one_hot(input2, y), 2)较慢。我添加了一个矩阵乘法运算。

tf.map_fn()
© www.soinside.com 2019 - 2024. All rights reserved.