Python tf.tile用于张量块
我有下面的张量a,我想用两种不同的方式使用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.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]]
这假设数组中的元素数可以被大小组整除。如果您想支持拥有最后一个“部分组”,那么您可以对完整组执行上述操作,独立平铺最后一位并连接