python 中的@运算符使用

在看fastai的代码时,看到这么一段:

n=100
x = torch.ones(n,2)
x[:,0].uniform_(-1.,1)
x[:5]
a = tensor(3.,2)
y = x@a + torch.rand(n)

这里面有个@符号不知道是啥意思?

于是百度搜了一下,都是说@xxx是注解或者装饰器,明显不是这段代码的场景嘛!

于是又Google了一下,原来这个@是Python 3.5之后加入的矩阵乘法运算符,终于明白了!

补充:python矩阵乘积运算(multiply/maumul/*/@)解析

在训练数据时经常涉及到矩阵运算,有段时间没有练习过了,手便生疏了。

今天重新测了一把,python中各类矩阵运算举例如下,可以清楚的看到tf.matmul(A,C)=np.dot(A,C)= A@C都属于叉乘,而tf.multiply(A,C)= A*C=A∙C属于点乘。

Python测试编码如下:

import tensorflow as tf
import numpy as np

a = np.array([[1,2],[3,4]])
b = np.array([5,6])
c = np.array([[5,6],[7,8]])
print('a:'+'\n',a)
print('b:'+'\n',b)
print('c:'+'\n',c)
#叉乘
d1=a@c
d2=tf.matmul(a,c)
d3=np.dot(a,c)
#点乘
f1=a*c
f2=tf.multiply(a,c)

with tf.compat.v1.Session() as sess:
    print('d1:叉乘a@c' + '\n', d1)
    print('d2:叉乘matmul(a,c)' + '\n', sess.run(d2))
    print('d3:叉乘dot(a,c)' + '\n', d3)
    print('f1:点乘a*c' + '\n', f1)
    print('f2:点乘multiply(a,c)' + '\n', sess.run(f2))

测试结果如下:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python函数参数中的*与**运算符

    问题描述 在阅读某些代码时,经常会看到函数定义/调用时的参数前带有 * 或者 ** 运算符,比较糊涂,今天来探究记录一番. 函数定义时的 * 和 ** 查阅相关资料得知,在参数前面加上* 号 ,意味着参数个数不止一个,而带一个星号(*)参数的函数传入的参数存储为一个元组(tuple),带两个(*)号则是表示字典(dict)! 我们定义3个函数来分别测试一下*和**的功能. 第一个函数func1参数列表中有两个参数,其中参数b前有* 第二个函数func2参数列表中有两个参数,其中参数b前有** 第

  • 基于Python3中运算符 **和*的区别说明

    我们知道**代表次方. 如下 >>>12 * 12 144 >>>12 ** 2 144 >>>a=1e200 >>> a 1e+200 >>>a ** 2 Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Result too large'

  • python入门教程之基本算术运算符

    一.算术运算符 运算符 + - * / % **(幂)求次方 //(取整除,向下取整)如:9//2 =4 二.比较运算符 运算符 == != <>(不等于,类似!=) < > >= <= #举例说明: x = 10 y = 20 print(x > y) # False print(x < y) # True print(x >= y) # False print(x <= y) # True print(x == y) # False prin

  • Python运算符+与+=的方法实例

    Python 中如果需要对一个变量进行增量运算通常有两种写法,a = a + b 或 a += b.虽然两种方法能够得到同样的结果,但两者却并不完全等价. 加法运算符 + 对于 a = a + b 这条语句来说,实际上执行了两步操作,首先执行 a + b 求出两者的 和,然后再将结果通过赋值运算符 = 赋值给变量 a. 来看下面的示例: >>> a = 100 >>> b = 200 >>> id(a) 1796532544 >>>

  • Python的运算符重载详解

    一.前言 运算符重载:为运算符定义方法 所谓重载,就是赋予新的含义同一个运算符可以有不同的功能 二.重载作用 让自定义的实例像内建对象一样进行运算符操作让程序简介易读对自定义对象将运算符赋予新的规则 运算符和特殊方法 运算符重载 # @function:运算符重载 # @Description: 一只萤火虫 class MyInteger: """ 创建一个自定义的整数类型 """ def __init__(self, data=0): # 1.

  • python中前缀运算符 *和 **的用法示例详解

    这篇主要探讨 ** 和 * 前缀运算符,**在变量之前使用的*and **运算符. 一个星(*):表示接收的参数作为元组来处理 两个星(**):表示接收的参数作为字典来处理 简单示例: >>> numbers = [2, 1, 3, 4, 7] >>> more_numbers = [*numbers, 11, 18] >>> print(*more_numbers, sep=', ') 2, 1, 3, 4, 7, 11, 18 用途: 使用 * 和

  • python 中的@运算符使用

    在看fastai的代码时,看到这么一段: n=100 x = torch.ones(n,2) x[:,0].uniform_(-1.,1) x[:5] a = tensor(3.,2) y = x@a + torch.rand(n) 这里面有个@符号不知道是啥意思? 于是百度搜了一下,都是说@xxx是注解或者装饰器,明显不是这段代码的场景嘛! 于是又Google了一下,原来这个@是Python 3.5之后加入的矩阵乘法运算符,终于明白了! 补充:python矩阵乘积运算(multiply/mau

  • 实例说明Python中比较运算符的使用

    下表列出了所有Python语言支持的比较操作符.假设变量a持有10和变量b持有20,则: 例如: 试试下面的例子就明白了所有的Python编程语言提供的比较操作符: #!/usr/bin/python a = 21 b = 10 c = 0 if ( a == b ): print "Line 1 - a is equal to b" else: print "Line 1 - a is not equal to b" if ( a != b ): print &q

  • python中常见的运算符及用法实例

    目录 前言 算术运算符 关系运算符 逻辑运算符 成员运算符 身份运算符 三目运算符 运算符优先级 总结 前言 python中的运算符主要包括算术运算符,关系(比较)运算符,赋值运算符,逻辑运算符,成员运算符,身份运算符,三目运算符.使用运算符将不同类型的数据按照一定的规则连接起来的式子,称为表达式.下面将介绍一些常用的运算符 算术运算符 运算符 描述 + 两个数相加两个数相加,或是字符串连接 - 两个数相减 * 两个数相乘,或是返回一个重复若干次的字符串 / 两个数相除,结果为浮点数 % 取模,

  • 初步认识Python中的列表与位运算符

    Python列表 List(列表) 是 Python 中使用最频繁的数据类型. 列表可以完成大多数集合类的数据结构实现.它支持字符,数字,字符串甚至可以包含列表(所谓嵌套). 列表用[ ]标识.是python最通用的复合数据类型.看这段代码就明白. 列表中的值得分割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认0开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾. 加号(+)是列表连接运算符,星号(*)是重复操作.如下实例: #!/usr/bin/python

  • Python中运算符"=="和"is"的详解

    前言 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同.下面来看看具体区别在哪. Python中比较两个对象是否相等,一共有两种方法,简单来说,它们的区别如下: is是比较两个引用是否指向了同一个对象(引用比较). ==是比较两个对象是否相等. >>> a = [1, 2, 3] >>&g

  • 深入理解Python中的*重复运算符

    在python中有个特殊的符号"*",可以用做数值运算的乘法算子,也是用作对象的重复算子,但在作为重复算子使用时一定要注意 注意的是:*重复出来的各对象具有同一个id,也就是指向在内存中同一块地址,在对各个对象进行操作是一定要注意. 举例来说: >>> alist = [range(3)]*4 >>> alist [[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]] 上面初始化一个二层列表用来模拟矩阵,该矩阵式4X

  • Python中的字典与成员运算符初步探究

    Python元字典 字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合. 两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取. 字典用"{ }"标识.字典由索引(key)和它对应的值value组成. #!/usr/bin/python # -*- coding: UTF-8 -*- dict = {} dict['one'] = "This is one" dict[2]

  • Python中字典与恒等运算符的用法分析

    本文实例讲述了Python中字典与恒等运算符的用法.分享给大家供大家参考,具体如下: 字典 字典是可变数据类型,其中存储的是唯一键到值的映射. elements = {"hydrogen": 1, "helium": 2, "carbon": 6} 字典的键可以是任何不可变类型,例如整数或元组,而不仅仅是字符串.甚至每个键都不一定要是相同的类型! print(elements["helium"]) # 2 我们可以使用方括号并

  • Python 中的lambda匿名函数和三元运算符

    目录 匿名函数 什么是匿名函数 分类 三元运算符 匿名函数 什么是匿名函数 用一句话表达只有返回值的函数就是匿名函数.匿名函数只用来实现一些简单的函数功能,所以追求代码的简洁和高效.使用关键字 ​​lambda​​ 定义,所以匿名函数又称之为lambda表达式. 分类 无参数的​​lambda​​ 表达式 # 普通函数 def func(): return 'hello motherland' # 调用 res = func() print(res) # hello motherland # l

随机推荐