第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > K.dot和K.batch_dot

K.dot和K.batch_dot

时间:2020-10-26 14:14:48

相关推荐

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)

如果要计算Ci,j,k,m,nC_{i,j,k,m,n}Ci,j,k,m,n​则先取出A[i]这个矩阵,再取出B[k][m]这个矩阵,两个相乘,得到一个矩阵D(矩阵的维度是 2×5,为什么是2×5矩阵,因为一个2×4的矩阵和一个4×5的矩阵相乘) 则 Ci,j,k,m,nC_{i,j,k,m,n}Ci,j,k,m,n​=Dj,nD_{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)

如果要计算Ci,j,k,m,nC_{i,j,k,m,n}Ci,j,k,m,n​则先取出A[i][j][k]这个矩阵,再取出B[i][j][k]这个矩阵,两个相乘,得到一个矩阵D(矩阵的维度是 4×5) 则 Ci,j,k,m,nC_{i,j,k,m,n}Ci,j,k,m,n​=Dm,nD_{m,n}Dm,n​

总结要点:

取出两个矩阵(矩阵显然是二维的),相乘,然后将这个矩阵对应的放到该放的位置上

具体参考:https://christopher5106.github.io/deep/learning//10/28/understand-batch-matrix-multiplication.html

(这篇讲的很好)

python中np.multiply()、np.dot()和星号()三种乘法运算的区别:

/hezhiyao/p/8649231.html

(numpy矩阵用*就默认是矩阵相乘,但是array相乘不能这么用,得用方法.dot())

TensorFlow - tf.multiply和tf.matmul 区别:

/flyfish1986/article/details/79141763/

注意tf.multiply(a,b)应该是只允许a、b最后一维可以不同,但是此时必须有一个维度是1,ab就相当于tf.multiply(a,b)

tf.matmul只可以a的倒数第一维和b的倒数第二维不一样,别的都必须一样(当len(shape(a或b))>2,表示成批的矩阵)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。