Tensorflow:如何使用"倍数"来平铺Tensor的元素。张量

时间:2018-01-29 17:20:19

标签: tensorflow tile

假设我有一个输入张量如下:

a = tf.constant ([[0, 0], [1, 1], [2, 2]])

和"倍数"张量:

mul= tf.constant([1, 3, 2])

我希望得到像这样的结果张量:

res =
 [[0, 0],
  [1, 1],
  [1, 1],
  [1, 1],
  [2, 2],
  [2, 2]]

张量a中的行数(n)等于no。张量元素。 如果n是固定的,我可以使用以下代码:

res = tf.tile ([a[0]], [mul[0], 1])

for i in range (1, 3):
    res = tf.concat ((res, tf.tile ([a[i]], [mul[i], 1])), 0)

但如果我不知道n(会有所不同),我怎样才能得到结果?

如果您有任何想法,我真的很感激!

1 个答案:

答案 0 :(得分:0)

你最简单的赌注可能是使用py_func将[1,3,2]变成类似[0,1,1,1,2,2]的东西,可以用作tf.gather的索引。

如果静态已知a张量中的最大行数,我认为你可以使用tf.dynamic_partition来获取它,但它可能会导致一个大图。

或者,tf.while_loop与tf.TensorArray相结合以存储输出可能有效。