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/*/@)解析
在訓練數(shù)據(jù)時經(jīng)常涉及到矩陣運算,有段時間沒有練習過了,手便生疏了。
今天重新測了一把,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))
測試結(jié)果如下:

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python標準庫壓縮包模塊zipfile和tarfile詳解(常用標準庫)
在我們常用的系統(tǒng)windows和Linux系統(tǒng)中有很多支持的壓縮包格式,包括但不限于以下種類:rar、zip、tar,這篇文章主要介紹了python標準庫壓縮包模塊zipfile和tarfile詳解(常用標準庫),需要的朋友可以參考下2022-06-06
matplotlib 畫動態(tài)圖以及plt.ion()和plt.ioff()的使用詳解
這篇文章主要介紹了matplotlib 畫動態(tài)圖以及plt.ion()和plt.ioff()的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
python數(shù)據(jù)處理和數(shù)據(jù)清洗的示例詳解
數(shù)據(jù)清洗是指發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識別的錯誤的最后一道程序,包括檢查數(shù)據(jù)一致性,處理無效值和缺失值等,數(shù)據(jù)清洗與處理的目的是提高數(shù)據(jù)的質(zhì)量,提高實驗結(jié)果的可靠度,本文給大家介紹了python數(shù)據(jù)處理和數(shù)據(jù)清洗的示例,需要的朋友可以參考下2024-08-08
python使用pyshark庫捕獲數(shù)據(jù)包的示例詳解
PyShark是一個基于Python的網(wǎng)絡數(shù)據(jù)包分析工具庫,它允許用戶捕獲、解碼和分析實時網(wǎng)絡流量,特別是Wi-Fi和TCP/IP協(xié)議的數(shù)據(jù),所以本文給大家介紹了python使用pyshark庫捕獲數(shù)據(jù)包的示例,需要的朋友可以參考下2024-08-08

