K.dot和K.batch_dot

K.dot(A,B)
A.shape(-1)和B.shape(-2)必须一样,其余没有限制
K.batch_dot(A,B)
A.shape(-1)和B.shape(-2)必须一样,A.shape(-2)和B.shape(-1)可以不一样,shape(-2)以前的必须完全一样
具体这两个怎么计算呢
假设:
a.shape:(1, 2, 4) b.shape:(8, 7, 4, 5)
c=K.dot(a,b) c.shape:(1,2,8,7,5)
如果要计算 C i , j , k , m , n C_{i,j,k,m,n} Ci,j,k,m,n则先取出A[i]这个矩阵,再取出B[k][m]这个矩阵,两个相乘,得到一个矩阵D(矩阵的维度是 2×5,为什么是2×5矩阵,因为一个2×4的矩阵和一个4×5的矩阵相乘) 则 C i , j , k , m , n C_{i,j,k,m,n} Ci,j,k,m,n= D j , n D_{j,n} Dj,n
另一例:
a = K.ones((9, 8, 7, 4, 2))
b = K.ones((9, 8, 7, 2, 5))
c = K.batch_dot(a, b)
c.shape (9, 8, 7, 4, 5)
如果要计算 C i , j , k , m , n C_{i,j,k,m,n} Ci,j,k,m,n则先取出A[i][j][k]这个矩阵,再取出B[i][j][k]这个矩阵,两个相乘,得到一个矩阵D(矩阵的维度是 4×5) 则 C i , j , k , m , n C_{i,j,k,m,n} Ci,j,k,m,n= D m , n D_{m,n} Dm,n
总结要点:
取出两个矩阵(矩阵显然是二维的),相乘,然后将这个矩阵对应的放到该放的位置上
具体参考:https://christopher5106.github.io/deep/learning/2018/10/28/understand-batch-matrix-multiplication.html
(这篇讲的很好)
python中np.multiply()、np.dot()和星号()三种乘法运算的区别:
https://www.cnblogs.com/hezhiyao/p/8649231.html
(numpy矩阵用*就默认是矩阵相乘,但是array相乘不能这么用,得用方法.dot())
TensorFlow - tf.multiply和tf.matmul 区别:
https://blog.csdn.net/flyfish1986/article/details/79141763/
注意tf.multiply(a,b)应该是只允许a、b最后一维可以不同,但是此时必须有一个维度是1,a
b就相当于tf.multiply(a,b)
tf.matmul只可以a的倒数第一维和b的倒数第二维不一样,别的都必须一样(当len(shape(a或b))>2,表示成批的矩阵)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值