Tensorflow中的笛卡尔积

在Tensorflow中有什么简单的方法可以像itertools.product一样做笛卡尔积吗?我想获得两个张量(ab)的元素组合,在Python中可以通过itertools作为list(product(a,

b))。我正在Tensorflow中寻找替代方案。

回答:

我将在此假定ab均为一维张量。

为了得到两者的笛卡尔积,我会用的组合tf.expand_dimstf.tile

a = tf.constant([1,2,3]) 

b = tf.constant([4,5,6,7])

tile_a = tf.tile(tf.expand_dims(a, 1), [1, tf.shape(b)[0]])

tile_a = tf.expand_dims(tile_a, 2)

tile_b = tf.tile(tf.expand_dims(b, 0), [tf.shape(a)[0], 1])

tile_b = tf.expand_dims(tile_b, 2)

cartesian_product = tf.concat([tile_a, tile_b], axis=2)

cart = tf.Session().run(cartesian_product)

print(cart.shape)

print(cart)

您使用LEN(一) LEN(B) 2张量,其中的元件的每个组合结束a并且b在最后一维表示。

以上是 Tensorflow中的笛卡尔积 的全部内容, 来源链接: utcz.com/qa/407380.html

回到顶部