假设我有一个输入张量如下:
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(会有所不同),我怎样才能得到结果?
如果您有任何想法,我真的很感激!
答案 0 :(得分:0)
你最简单的赌注可能是使用py_func将[1,3,2]变成类似[0,1,1,1,2,2]的东西,可以用作tf.gather的索引。
如果静态已知a张量中的最大行数,我认为你可以使用tf.dynamic_partition来获取它,但它可能会导致一个大图。
或者,tf.while_loop与tf.TensorArray相结合以存储输出可能有效。