首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优雅的Numpy张量产品

优雅的Numpy张量产品
EN

Stack Overflow用户
提问于 2021-04-28 14:42:19
回答 1查看 135关注 0票数 0

我需要在numpy (或py手电筒)中取两个张量的乘积:

我有过

代码语言:javascript
复制
A = np.arange(1024).reshape(8,1,128)
B = np.arange(9216).reshape(8, 128, 9)

想要得到C,用点积加在A (axis=2)的最后一个昏暗和B的中间暗(axis=1)上。这应该有维度8x9。目前,我正在做:

代码语言:javascript
复制
C = np.zeros([8, 9])
for i in range(8):
    C[i,:] = np.matmul(A[i,:,:], B[i,:,:])

如何优雅地做这件事?

我试过:

代码语言:javascript
复制
np.tensordot(weights, features, axes=(2,1)).

但是它返回8x1x8x9

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-28 15:27:34

一种方法是使用numpy.einsum

代码语言:javascript
复制
C = np.einsum('ijk,ikl->il', A, B)

或者你可以使用广播矩阵乘法。

代码语言:javascript
复制
C = (A @ B).squeeze(axis=1)
# equivalent: C = np.matmul(A, B).squeeze(axis=1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67302419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档