首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Py火炬-porting@操作符

Py火炬-porting@操作符
EN

Stack Overflow用户
提问于 2020-02-05 17:20:38
回答 1查看 5.7K关注 0票数 3

我有下面的代码,我想移植到Torch Matmul

代码语言:javascript
复制
rotMat = xmat @ ymat @ zmat

我能知道这是否是正确的顺序:

代码语言:javascript
复制
rotMat = torch.matmul(xmat, torch.matmul(ymat, zmat))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-05 17:57:19

根据python对运算符优先的文档,@操作符具有从左到右的结合性。

https://docs.python.org/3/reference/expressions.html#operator-precedence

同一框组中的

运算符从左到右(除从右到左的幂运算外)。

因此,等效的操作是

代码语言:javascript
复制
rotMat = torch.matmul(torch.matmul(xmat, ymat), zmat)

尽管要记住,矩阵乘法是相联的(数学上的),所以如果你用另一种方式做,结果就不会有太大的差别。通常,您希望以导致计算步骤最少的方式进行关联。例如,使用朴素矩阵乘法算法,如果X为1x10,Y为10x100,Z为100x1000,则

代码语言:javascript
复制
(X @ Y) @ Z

代码语言:javascript
复制
X @ (Y @ Z)

约为1*10*100 + 1*100*1000 = 101,000乘法/加法运算的第一个与10*100*1000 + 1*10*1000 = 1,001,000运算的第二个。虽然它们有相同的结果(忽略舍入错误),第二个版本将大约慢10倍!

正如@szymonMaszkepy手电筒张量所指出的,它也支持@运算符,因此您仍然可以使用

代码语言:javascript
复制
xmat @ ymat @ zmat

在火把里。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60080997

复制
相关文章

相似问题

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