我有两个2-D张量,并希望拥有它们的笛卡尔积。笛卡尔式,我的意思是第一张量的每一行与第二张量的每一行的连续。例如:
输入:
[[1,2,3],[4,5,6]]
和
[[7,8],[9,10]]
输出:
[[1,2,3,7,8],
[1,2,3,9,10],
[4,5,6,7,8],
[4,5,6,9,10]]
我见过this post,但它不适合这种情况。什么是最好的?
谢谢
答案 0 :(得分:1)
这是一种方法。分别沿第二维和第一维重复元素a
和b
,进一步重构重复a
,然后连接两个重复的张量。
a_ = tf.reshape(tf.tile(a, [1, b.shape[0]]), (a.shape[0] * b.shape[0], a.shape[1]))
b_ = tf.tile(b, [a.shape[0], 1])
tf.concat([a_, b_], 1).eval()
#array([[ 1, 2, 3, 7, 8],
# [ 1, 2, 3, 9, 10],
# [ 4, 5, 6, 7, 8],
# [ 4, 5, 6, 9, 10]])