pytorch scatter直觀理解

2022-07-12 06:54:16 字數 1203 閱讀 6432

簡單記錄一下pytorch scatter_的理解, 官方解釋在  

官方的例子如下,下面說說使用層面的直觀理解。

>>> src = torch.arange(1, 11).reshape((2, 5))

>>>src

tensor([[1,2, 3, 4, 5],

[ 6, 7, 8, 9, 10]])

>>> index = torch.tensor([[0, 1, 2, 0]])

>>> torch.zeros(3, 5, dtype=src.dtype).scatter_(0, index, src)

tensor([[

1, 0, 0, 4

, 0],

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

[0, 0, 3, 0, 0]])

scatter的第乙個引數是0,意思是index中的值指的是第幾行。這麼理解,index是[0,1,2,0],對應的是說src的第一行[1,2,3,4,5]對應到0矩陣的每乙個元素。

比如,index中的第乙個0,是說src[0,0],即1,對應到零矩陣的第0列第0行,

index中的第二個1,是說src[0,1]對應的是零矩陣的第1列第1行,

index中的最後乙個0,說的是src[0,3]對應的是零矩陣的第3列第0行

再看乙個例子,這個例子scatter的第乙個引數是1,意思是index中座標是指的第幾列。

>>> index = torch.tensor([[0, 1, 2], [0, 1, 4]])

>>> torch.zeros(3, 5, dtype=src.dtype).scatter_(1, index, src)

tensor([[1, 2, 3, 0, 0],

[6, 7, 0, 0, 8

], [0, 0, 0, 0, 0]])

index中一共有兩行,意思是一共替換原始的3行5列的矩陣中的前兩行。第1行是[0,1,4]意思是替換原始零矩陣的第1行的第0列,第一行第1列和第一行第4列。我們看到確實零矩陣第1行的這三個數是被替換過得。

替換的是什麼值呢?就是src中的第1行的0,1,2三列,即6,7,8.

Pytorch scatter 理解軸的含義

scatter input,dim,index,src 將src中資料根據index中的索引按照dim的方向填進input中。x torch.rand 2,5 x 0.4319 0.6500 0.4080 0.8760 0.2355 0.2609 0.4711 0.8486 0.8573 0.102...

直二面角與直三面角

從一條直線出發的兩個半平面所組成的圖形叫做二面角,這條直線叫做二面角的稜,這兩個半平面叫做二面角的面。詳述 平面內的一條直線,把這個平面分為兩部分,每一部分都叫作半平面。從一條直線出發的兩個半平面所組成的圖形叫作二面角。這條直線叫作二面角的稜,這兩個半平面叫作二面角的面。二面角的大小,可以用它的平面...

美國矽谷直聘

美國google公司 一 公司介紹 google公司 中文譯名 谷歌 是一家美國的跨國科技企業,致力於網際網路搜尋 雲計算 廣告技術等領域,開發並提供大量基於網際網路的產品與服務,其主要利潤來自於 adwords 等廣告服務。google 的使命是整合全球資訊,使人人皆可訪問並從中受益。google...