Python tf.tile用于张量块

Python tf.tile用于张量块,python,matrix,tensorflow,repeat,Python,Matrix,Tensorflow,Repeat,我有下面的张量a,我想用两种不同的方式使用tf.tile来得到不同的结果 a.eval() = array([[ 1], [ 2], [ 3], [10], [20], [30]], dtype=int32) 我知道我能做到: a_rep = tf.tile(a, [1,2]) a_rep = tf.reshape(rep, (12, 1)) 为了获得: a_rep.eval() = array([[ 1],

我有下面的张量a,我想用两种不同的方式使用tf.tile来得到不同的结果

a.eval() = array([[ 1],
       [ 2],
       [ 3],
       [10],
       [20],
       [30]], dtype=int32)
我知道我能做到:

a_rep = tf.tile(a, [1,2])

a_rep = tf.reshape(rep, (12, 1)) 
为了获得:

a_rep.eval() = array([[ 1],
       [ 1],
       [ 2],
       [ 2],
       [ 3],
       [ 3],
       [10],
       [10],
       [20],
       [20],
       [30],
       [30]], dtype=int32)
我应该如何使用tf.tile来获得以下结果?我基本上希望有特定大小的张量块重复,而不是只重复一个值

a_rep.eval() = array([[ 1],
       [ 2],
       [ 3],
       [ 1],
       [ 2],
       [3],
       [10],
       [20],
       [30],
       [10],
       [20],
       [30]], dtype=int32)

提前非常感谢

类似的技巧是,平铺第二个维度,但在新的第三个维度上堆叠“组”:

import tensorflow as tf

with tf.Session() as sess:
    a = tf.constant([[ 1], [ 2], [ 3], [10], [20], [30]], dtype=tf.int32)
    group_size = 3
    repeats = 2
    result = tf.reshape(tf.tile(tf.reshape(a, (-1, 1, group_size)), (1, repeats, 1)),
                        (-1, 1))
    print(sess.run(result))
输出:

[[ 1]
 [ 2]
 [ 3]
 [ 1]
 [ 2]
 [ 3]
 [10]
 [20]
 [30]
 [10]
 [20]
 [30]]
这假设数组中的元素数可以被大小组整除。如果您想支持拥有最后一个“部分组”,那么您可以对完整组执行上述操作,独立平铺最后一位并连接