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

Tensorflow- Cartesian product of two 2-D tensors

我有两个二维张量,想要它们的笛卡尔积。笛卡尔,我的意思是第一张量的每一行与第二张量的每一行的连接。例如:

输入:

[[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]]

我见过 ,但它不适用于这种情况。什么是最好的?

谢谢

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