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]]
我见过 ,但它不适用于这种情况。什么是最好的?
谢谢
这是一种方法。分别沿第二维和第一维重复元素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]])
我有两个二维张量,想要它们的笛卡尔积。笛卡尔,我的意思是第一张量的每一行与第二张量的每一行的连接。例如:
输入:
[[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]]
我见过
谢谢
这是一种方法。分别沿第二维和第一维重复元素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]])