簡單記錄一下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...