TensorFlow批量外产品

时间:2016-02-04 23:38:00

标签: tensorflow

我有以下两个张量:

x, with shape [U, N]
y, with shape [N, V]

我想执行批量外部产品:我想将x的第一列中的每个元素乘以y第一行中的每个元素,以获得形状张量{ {1}},然后[U, V]的第二列x的第二列,依此类推。最终张量的形状应为y,其中[N, U, V]为批量大小。

在TensorFlow中有没有简单的方法来实现这一目标?我试图使用N但没有成功。

2 个答案:

答案 0 :(得分:6)

以下是否可以使用tf.batch_matmul()

print x.get_shape()  # ==> [U, N]
print y.get_shape()  # ==> [N, V]

x_transposed = tf.transpose(x)
print x_transposed.get_shape()  # ==> [N, U]

x_transposed_as_matrix_batch = tf.expand_dims(x_transposed, 2)
print x_transposed_as_matrix_batch.get_shape()  # ==> [N, U, 1]

y_as_matrix_batch = tf.expand_dims(y, 1)
print y_as_matrix_batch.get_shape()  # ==> [N, 1, V]

result = tf.batch_matmul(x_transposed_as_matrix_batch, y_as_matrix_batch)
print result.get_shape()  # ==> [N, U, V]

答案 1 :(得分:0)

也许,使用tf.einsum有一个更优雅的解决方案:

Rollback(false)