Tensorflow-两个二维张量的笛卡尔积

时间:2018-06-11 23:49:43

标签: python tensorflow cartesian-product

我有两个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,但它不适合这种情况。什么是最好的?

谢谢

1 个答案:

答案 0 :(得分:1)

这是一种方法。分别沿第二维和第一维重复元素ab,进一步重构重复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]])