我有一个输入张量如下:
a = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
和'倍数'张量:
mul= tf.constant([1, 3, 2])
是否可以平铺3D张量,第一个元素a
出现一次,第二个出现3次,最后一个元素出现两次?
result = [
[[1, 2, 3]],
[[4, 5, 6],[4, 5, 6],[4, 5, 6]],
[[7, 8, 9], [7, 8, 9]]
]
Tensorflow 0.12
非常感谢。
答案 0 :(得分:1)
不,这是不可能的。阅读tensors and shapes from the docs。
要理解为什么不可能想象每行中具有不同数量元素的矩阵。它显然不是一个矩阵。
答案 1 :(得分:0)
你可以使用numpy
import numpy as np
import tensorflow as tf
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
mul = np.array([1,3,2])
result = []
for i in range(len(mul)):
result.append(np.tile(a[i], (mul[i], 1)))
result = np.array(result)
答案 2 :(得分:0)
我确信你在tensorflow中不能有非矩形张量。这就是导致问题的原因。否则我只是将@Kris的代码扩展为完全在tensorflow上运行。
import tensorflow as tf
sess = tf.InteractiveSession()
a = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
mul = tf.constant([1,3,2])
result = []
for i in range(3):
result.append(tf.tile(a[i],[mul[i]]))
print([r.eval() for r in result])
#r_tensor = tf.stack(0,[r for r in result]) # Not possible