首页 文章

TensorFlow批量外产品

提问于
浏览
2

我有以下两个张量:

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

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

有什么简单的方法可以在TensorFlow中实现这一目标吗?我试图使用 batch_matmul() 但没有成功 .

1 回答

  • 4

    以下工作,使用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]
    

相关问题