Keras的tensorflow后端复矩阵乘法

Keras的tensorflow后端复矩阵乘法,tensorflow,matrix,keras,matrix-multiplication,Tensorflow,Matrix,Keras,Matrix Multiplication,设矩阵F1的形状为(a*h*w*m),矩阵F2的形状为(a*h*w*n),矩阵G的形状为(a*m*n) 我想使用Keras的tensorflow后端实现以下公式,该公式根据F1和F2的因子计算G的每个因子。然而,我对各种后端函数感到困惑,尤其是K.dot()和K.batch\u dot() $$G{k,i,j}=\sum^h{s=1}\sum^w{t=1}\dfrac{F^1{k,s,t,i}*F^2{k,s,t,j}{h*w}$$i (通过在$$内复制上述等式并将其粘贴到中获得的图像) 有没

设矩阵
F1
的形状为
(a*h*w*m)
,矩阵
F2
的形状为
(a*h*w*n)
,矩阵
G
的形状为
(a*m*n)

我想使用Keras的tensorflow后端实现以下公式,该公式根据
F1
F2
的因子计算
G
的每个因子。然而,我对各种后端函数感到困惑,尤其是
K.dot()
K.batch\u dot()

$$G{k,i,j}=\sum^h{s=1}\sum^w{t=1}\dfrac{F^1{k,s,t,i}*F^2{k,s,t,j}{h*w}$$i

(通过在$$内复制上述等式并将其粘贴到中获得的图像)

有没有办法实现上述公式?提前感谢。

使用Tensorflow(您可以将其包装在Keras的
Lambda
层中):

将tensorflow导入为tf
将numpy作为np导入
a、 h,w,m,n=1,2,3,4,5
F1=tf.随机均匀(形状=(a,h,w,m))
F2=tf.随机均匀(形状=(a,h,w,n))
G=tf.einsum('ahwm,ahwn->amn',F1,F2)/(h*w)
使用tf.Session()作为sess:
f1,f2,g=sess.run([f1,f2,g])
#手动计算G以检查我们的操作,天真地再现您的方程式:
g_check=np.zero(形状=(a,m,n))
对于范围(a)内的k:
对于范围内的i(m):
对于范围(n)内的j:
对于范围(h)内的s:
对于范围(w)内的t:
g_check[k,i,j]+=f1[k,s,t,i]*f2[k,s,t,j]/(h*w)
#检查是否相等:
打印(np.ALLCOSE(g,g_检查))
#>正确

太棒了!非常感谢。