Tensorflow。 NxD矩阵乘以NxD矩阵得到NxDxD矩阵

时间:2018-11-03 04:28:34

标签: python tensorflow

例如

   A=[[3,2],
      [1,3],
      [4,3]]

   B=[[4,1],
      [2,1],
      [2,4]]

对于矩阵的每个行向量;我想执行列行乘法

result = []

for i in range(3):
    x = tf.matmul(tf.reshape(A[i],[2,1]), tf.reshape(B[i],[1,2])) # gives 2x2 matrix
    result.append(x)

tf.stack(result)

我想知道是否有一种更有效的方法可以完全摆脱循环,因为实际上我需要循环数千次

1 个答案:

答案 0 :(得分:0)

幸运的是,Tensorflow支持“批处理”矩阵乘法,因此以下内容就足够了:

A = tf.placeholder(tf.float32, [3,2])
B = tf.placeholder(tf.float32, [3,2])
AA = tf.reshape(A,[3,2,1])
BB = tf.reshape(B,[3,1,2])
print(tf.matmul(AA,BB))
>>> <tf.Tensor 'MatMul_1:0' shape=(3, 2, 2) dtype=float32>