如何选择一个张量中定义的特定值和另一个张量中的数据

时间:2017-01-21 07:55:05

标签: python variables tensorflow

我有一个张量变量y(tf.shape(y) => [140,8])和另一个变量x = tf.constant([2,4,5,7],tf.int32)

我想选择x中提到的所有行和列[2,4,5,7],用于y中的数据。

在Matlab中我可以简单地定义req_data = y[:,x]给出x中y数据的选定列。 如何在张量流中做到这一点?

1 个答案:

答案 0 :(得分:1)

如果你想做req_data = y[:,x]
首先使用tf.transpose,因此张量的形状将为(8,140)
然后使用tf.gather选择数据
因为tf.gather仅适用于轴= 0,所以首先进行转置 然后转置回来

a = tf.constant([[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]])
a_trans = tf.transpose(a)
b = tf.constant([2,4,5,7])
c = tf.gather(a_trans, b)
c_trans = tf.transpose(c)

with tf.Session() as sess:
    print sess.run(c_trans)
    #output [[3  5  6  8]
    #        [13 15 16 18]]