最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch之scatter_的用法及說明

 更新時間:2023年09月11日 11:21:36   作者:czg792845236  
這篇文章主要介紹了pytorch之scatter_的用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

pytorch scatter_的用法

scatter_(input, dim, index, src)將src中數(shù)據(jù)根據(jù)index中的索引按照dim的方向填進input中

這個函數(shù)可以從轉(zhuǎn)換成onehot編碼來理解。

看下面代碼:

index = torch.tensor([1,2,1,2,0])
torch.zeros(5,3).scatter_(1, index.unsqueeze(1), 1)  
# tensor([[0., 1., 0.],
#         [0., 0., 1.],
#         [0., 1., 0.],
#         [0., 0., 1.],
#         [1., 0., 0.]])

簡要說明

這段代碼的目的就是將李表[1,2,1,2,0]轉(zhuǎn)成one-hot編碼的形式。

因為有5個數(shù)據(jù),然后數(shù)值范圍從0~2,所以需要設(shè)置3列,所以目標(biāo)矩陣應(yīng)該是5x3。

scatter_ 中第一個1表示沿著維度1的方向也就是列的方向,第二個參數(shù)表示需要填值的索引,第三個參數(shù)表示填的值。

比如以輸出結(jié)果的第一行為例,原本 torch.zeros 使得第一行的元素都是0,但是 scatter_ 的第二個輸入?yún)?shù)第一行是1(因為經(jīng)過unsqueeze后第一行只有一個元素了),所以輸出結(jié)果的第一行的第1個元素(從0開始)應(yīng)該填上 scatter 最后一個參數(shù)所表示的值,剩下的以此類推。

不過其實得到onehot編碼可以用pandas.get_dummies

index = [1,2,1,2,0]
pd.get_dummies(index)

.scatter_函數(shù)

.scatter_函數(shù)放置元素或者修改元素。

>>> x = torch.rand(2, 5)
>>> x
tensor([[0.6132, 0.8931, 0.7345, 0.6793, 0.6606],
        [0.0630, 0.1785, 0.7312, 0.6456, 0.6307]])
>>> torch.zeros(3, 5).scatter_(0, torch.LongTensor([[0, 1, 2, 0, 0], [2, 0, 0, 1, 2]]), 1)
tensor([[1., 1., 1., 1., 1.],
        [0., 1., 0., 1., 0.],
        [1., 0., 1., 0., 1.]])
>>> torch.zeros(3, 5).scatter_(0, torch.LongTensor([[0, 1, 2, 0, 0], [2, 0, 0, 1, 2]]), x)
tensor([[0.6132, 0.1785, 0.7312, 0.6793, 0.6606],
        [0.0000, 0.8931, 0.0000, 0.6456, 0.0000],
        [0.0630, 0.0000, 0.7345, 0.0000, 0.6307]])

torch.zeros(3,5),先創(chuàng)建一個3行5列的全為0的tensor,后續(xù)使用scatter函數(shù)往里放置元素,如何放置按照參數(shù)1和參數(shù)2的規(guī)定,放置哪些元素,按照參數(shù)3的規(guī)定。

具體來說

上述.scatter_(參數(shù)1,參數(shù)2,參數(shù)3)中,參數(shù)0/1表示,按行/列進行元素的放置(維度再高類比擴展),參數(shù)2用于找索引(找torch.zeros中位置),參數(shù)3為希望放入的元素。例如當(dāng)參數(shù)3為x的時候,torch.zeros(3,5)中填入的為x中的元素;當(dāng)參數(shù)3為1的時候,形成的tensor中為1,即表示希望放入的元素為1。

如何放置,先從簡單的,放置的元素為1開始:

第一步,先看參數(shù)2,找index。

參數(shù)2的值是一個tensor:

[[0, 1, 2, 0, 0],
[2, 0, 0, 1, 2]]

例如,其中第1行第0列(1,0)的值為2,即index=2。

第二步,根據(jù)index確定行/列,看參數(shù)1。

本例中參數(shù)1為0,按放置,因此在torch.zeros(3,5)的第2行(注意從0開始)填入1,那么,在第2行(從0開始)的哪一列填入1呢,需要遵循的原則是:第一步中index所在位置為第1列,因此放入第1列。因此在torch.zeros(3,5)的(2,1)位置上放入1。

即往torch.zeros(3,5)中填入元素的時候,torch.zeros(3,5)中元素的列與x的列是相同的,這一點當(dāng)x是具體數(shù)值的時候比較清晰??梢钥闯鰔的列與torch.zeros(3,5)最后填完之后的列中的元素是對應(yīng)的,比如第1列的元素不會跑到第2列去,但是行不一定。

那么,復(fù)雜一點,如果放置的元素不是1,而是需要把x中的元素放入呢。增加第三步,目前已經(jīng)找到參數(shù)2中 (1,0) 的index是2了,再看參數(shù)3,此時參數(shù)3為x,在x中找 (1,0) 位置上的元素是0.0630,因此這時候在第二步中,放入第1行第0列的元素不是1,而是0.0630。因此在torch.zeros(3,5)的(2,1)位置上放入0.0630。

Note:

  • 第二步中,如果參數(shù)=1,表示按行放置,則先確定行再確定列;如果參數(shù)=0,表示按列放置,則先確定列再確定行。
  • 本例中因為是按行放置,要求torch.zeros(3,5)的列與x的列是相同的,否則沒法做到列列對應(yīng);如果是按列方式,則要求【被填入的torch】與x的行是相同的,否則沒法做到行行對應(yīng)。
  • 參數(shù)2中的值控制的是【被填入的torch】的x行或者x列,因此參數(shù)2中的最大值,不應(yīng)該超過【被填入的torch】的行/列(按列排序/按行排序)–>參數(shù)2控制位置。

->按行排序,列列對應(yīng);按列排序,行行對應(yīng)。

參數(shù)2,參數(shù)1,最后再看參數(shù)3。

index數(shù)值找到確定行/列,再看index位置,確定列/行。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python3列表刪除大量重復(fù)元素remove()方法的問題詳解

    python3列表刪除大量重復(fù)元素remove()方法的問題詳解

    這篇文章主要給大家介紹了關(guān)于python3列表刪除大量重復(fù)元素remove()方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 用python 批量操作redis數(shù)據(jù)庫

    用python 批量操作redis數(shù)據(jù)庫

    這篇文章主要介紹了如何用python 批量操作redis數(shù)據(jù)庫,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python3離線安裝Requests模塊問題

    Python3離線安裝Requests模塊問題

    這篇文章主要介紹了Python3離線安裝Requests模塊問題,本文實例代碼給大家介紹的非常詳細,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • 一文教你如何使用python編寫交互式.exe程序

    一文教你如何使用python編寫交互式.exe程序

    這篇文章主要為大家詳細介紹了如何使用python編寫實現(xiàn)一個交互式.exe程序,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以了解下
    2025-07-07
  • Python中字符串格式化的方法小結(jié)

    Python中字符串格式化的方法小結(jié)

    在Python中,格式化字符串輸出是一項非常常見的任務(wù),Python提供了多種方式來實現(xiàn)字符串格式化,每種方式都有其獨特的優(yōu)勢和用法,下面我們就來學(xué)習(xí)一下這些方法的具體操作吧
    2023-11-11
  • 詳解Python 字符串相似性的幾種度量方法

    詳解Python 字符串相似性的幾種度量方法

    這篇文章主要介紹了詳解Python 字符串相似性的幾種度量方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Django使用Mysql數(shù)據(jù)庫已經(jīng)存在的數(shù)據(jù)表方法

    Django使用Mysql數(shù)據(jù)庫已經(jīng)存在的數(shù)據(jù)表方法

    今天小編就為大家分享一篇Django使用Mysql數(shù)據(jù)庫已經(jīng)存在的數(shù)據(jù)表方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python項目環(huán)境切換的幾種實現(xiàn)方式

    python項目環(huán)境切換的幾種實現(xiàn)方式

    本文主要介紹了python項目環(huán)境切換的幾種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-11-11
  • Python實現(xiàn)為PDF去除水印的示例代碼

    Python實現(xiàn)為PDF去除水印的示例代碼

    這篇文章主要介紹了如何利用Python實現(xiàn)PDF去除水印功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • FastApi如何快速構(gòu)建一個web項目的實現(xiàn)

    FastApi如何快速構(gòu)建一個web項目的實現(xiàn)

    本文主要介紹了FastApi如何快速構(gòu)建一個web項目的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評論

怀安县| 张北县| 长治市| 昌黎县| 静安区| 乌拉特前旗| 繁峙县| 潞城市| 定边县| 巴楚县| 乐安县| 河曲县| 阿合奇县| 射洪县| 湘乡市| 辽宁省| 巴林左旗| 灌云县| 彰化县| 巴东县| 石台县| 谢通门县| 重庆市| 平武县| 遂川县| 克东县| 天峨县| 阳新县| 西贡区| 满洲里市| 沙洋县| 中西区| 龙陵县| 专栏| 报价| 肃宁县| 彭州市| 岐山县| 台中市| 汤原县| 嘉兴市|