Python tensorflow-将矩阵向量与另一个向量中的每个矩阵相乘
如果我有两个张量-A的形状Python tensorflow-将矩阵向量与另一个向量中的每个矩阵相乘,python,tensorflow,Python,Tensorflow,如果我有两个张量-A的形状[4,3,3]和B的形状[2,3,3]。对于A中的每个[3,3]矩阵,我想与B中的每个[3,3]矩阵相乘,以产生具有形状[4,2,3,3]的张量C 如何在Tensorflow中实现这一点?您可以使用tf.einsum('ikl,jkl->ijkl',A,B): 例如: A=tf.重塑(tf.范围(36),[4,3,3]) B=tf.重塑(tf.范围(18),[2,3,3]) tf.einsum('ikl,jkl->ijkl',A,B) # 您可以为此操作取消堆栈: A
[4,3,3]
和B的形状[2,3,3]
。对于A中的每个[3,3]
矩阵,我想与B中的每个[3,3]
矩阵相乘,以产生具有形状[4,2,3,3]
的张量C
如何在Tensorflow中实现这一点?您可以使用
tf.einsum('ikl,jkl->ijkl',A,B)
:
例如:
A=tf.重塑(tf.范围(36),[4,3,3])
B=tf.重塑(tf.范围(18),[2,3,3])
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])
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])
除了乘法之外,还有其他算术运算符可以这样做吗?假设我想添加A和B。您可以先将
A
重塑为(4,1,3,3),然后添加A和B。tf.重塑(A[4,1,3,3])+B
,它使用广播属性来完成此操作。
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])