张量流-将矩阵向量与另一个向量中的每个矩阵相乘

时间:2019-02-23 17:19:26

标签: python tensorflow

如果我有两个张量-形状为[4,3,3] A 和形状为[2,3,3] B 。对于 A 中的每个[3,3]矩阵,我想与 B 中的每个[3,3]矩阵相乘以生成张量 C ,形状为[4,2,3,3]

该如何在 Tensorflow 中完成?

2 个答案:

答案 0 :(得分:2)

您可以使用tf.einsum('ikl,jkl->ijkl', A, B)

示例:

A = tf.reshape(tf.range(36), [4,3,3])
B = tf.reshape(tf.range(18), [2,3,3])
tf.einsum('ikl,jkl->ijkl', A, B)
# <tf.Tensor 'einsum/transpose_2:0' shape=(4, 2, 3, 3) dtype=int32>

答案 1 :(得分:0)

您可以为此操作将它们拆下来:

A = tf.reshape(tf.range(36), [4,3,3])
B = tf.reshape(tf.range(18), [2,3,3])
AB=[tf.matmul(i,j) for i in tf.unstack(A,int(A.shape[0]),0) for j in tf.unstack(B,int(B.shape[0]),0)]
AB=tf.reshape(tf.stack(output,0),[4,2,3,3])