Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tensorflow-将矩阵向量与另一个向量中的每个矩阵相乘_Python_Tensorflow - Fatal编程技术网

Python tensorflow-将矩阵向量与另一个向量中的每个矩阵相乘

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

如果我有两个张量-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])