首页 > 编程语言 > 详细

python@与@=的用法

时间:2019-12-30 12:43:54      阅读:79      评论:0      收藏:0      [点我收藏+]

最近在阅读一篇paper给出的代码时遇到了这样一行

h_ij0 = z_ij @ rel_var

这让我很费解,因为之前从来就没有遇到过@作为运算符进行二元运算的情况。之前遇到的@都是作为装饰器的标志符号(有关python装饰器的讲解已经烂大街了,有兴趣的可以直接去搜索),今天我们就来探究一下python中@作为二元运算符的作用。

当然,直接搜百度,搜bing甚至搜StackOverflow都没有找到想要的答案,全是一堆讲python装饰器的。我甚至开始怀疑paper贴的代码是错的,但是它的确可以运行。当我查阅python的官方文档时,我找到了一些线索:

从上图我们可以看出,python官方文档将@运算符分为了OperatorsDelimiters说明@确实可以参与二元运算的,于是我回到paper给的代码中去,分别查看参与运算的两个参数类型和shape,输出如下:

z_ij: torch.Size([200, 2]) 
rel_var: torch.Size([2, 300])
h_ij0: torch.Size([200,300])

看到这里大家应该能猜出来了,@执行的是矩阵乘法,让我们来做个实验。

import numpy as np
a = np.ones((2, 3))
b = np.ones((3, 2))
print(a @ b)
# 输出 [[3. 3.]
        [3. 3.]]

说明我们猜想正确,以上。

python@与@=的用法

原文:https://www.cnblogs.com/1623-1017/p/12118840.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!