日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中tolist_高效的张量操作 Pytorch中就占5种

發布時間:2025/3/20 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中tolist_高效的张量操作 Pytorch中就占5种 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PyTorch是一個基于Python的科學包,用于使用一種稱為張量的特殊數據類型執行高級操作。 雖然也有其他方式可以實現相同的效果,但今天分享的這5個操作更加方便高效,值得一試。

什么是張量?

張量是具有規則形狀和相同數據類型的數字、向量、矩陣或多維數組。

張量是屬于線性代數里的知識點,線性代數是用虛擬數字世界表示真實物理世界的工具。

點——標量(scalar);線——向量(vector);面——矩陣(matrix);體——張量(tensor);

一個張量就是一個可以容納N維數據及其線性操作的容器。

Pytorch中的張量操作

今天分享的5個操作分別是:expand()、permute()、tolist()、narrow()、where()。

1. expand()

將現有張量沿著值為1的維度擴展到新的維度。張量可以同時沿著任意一維或多維展開。如果你不想沿著一個特定的維度展開張量,你可以設置它的參數值為-1。

在這個例子中,張量的原始維數是[1,2,3]。它被擴展到[2,2,3]。

2. permute()

這個函數返回一個張量的視圖,原始張量的維數根據我們的選擇而改變。例如,如果原來的維數是[1,2,3],我們可以將它改為[3,2,1]。該函數以所需的維數順序作為參數。

在這個例子中,原始張量的維度是[1,2,3]。使用permuting,我將順序設置為(2,1,0),這意味著新的維度應該是[3,2,1]。如圖所示,張量的新視圖重新排列了數字,使得張量的維度為[3,2,1]。

當我們想要對不同維數的張量進行重新排序,或者用不同階數的矩陣進行矩陣乘法時,可以使用這個函數。

3. tolist()

這個函數以Python數字、列表或嵌套列表的形式返回張量。在此之后,我們可以對它執行任何python邏輯和操作。

在這個例子中,張量以嵌套列表的形式返回。

4. narrow()

這個函數返回一個新的張量,這個張量是原來張量的縮小版。這個函數的參數是輸入張量、要縮小的維數、起始索引和新張量沿該維數的長度。它返回從索引start到索引(start+length-1)中的元素。

在這個例子中,張量要沿著第2維,也就是最里面的維度縮小。它接受列表中的元素,從索引2開始,到索引3(=2+2 -1,即start+length-1)。

Narrow()的工作原理類似于高級索引。例如,在一個2D張量中,使用[:,0:5]選擇列0到5中的所有行。同樣的,可以使用torch.narrow(1,0,5)。然而,在高維張量中,對于每個維度都使用range操作是很麻煩的。使用narrow()可以更快更方便地實現這一點。

5. where()

這個函數返回一個新的張量,其值在每個索引處都根據給定條件改變。這個函數的參數有:條件,第一個張量和第二個張量。在每個張量的值上檢查條件(在條件中使用),如果為真,就用第一個張量中相同位置的值代替,如果為假,就用第二個張量中相同位置的值代替。

這里,它檢查張量a的值是否是偶數。如果是,則用張量b中的值替換,b中的值都是0,否則還是和原來一樣。此函數可用于設定閾值。如果張量中的值大于或小于某一數值,它們可以很容易地被替換。

總結

以上是生活随笔為你收集整理的python中tolist_高效的张量操作 Pytorch中就占5种的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。