逐元素操作
這部分操作會對tensor的每乙個元素(point-wise,又名element-wise)進行操作,此類操作的輸入與輸出形狀一致。常用的操作如表3-4所示。
表3-4: 常見的逐元素操作
函式功能
abs/sqrt/div/exp/fmod/log/pow..
絕對值/平方根/除法/指數/求餘/求冪..
cos/sin/asin/atan2/cosh..
相關三角函式
ceil/round/floor/trunc
上取整/四捨五入/下取整/只保留整數部分
clamp(input, min, max)
超過min和max部分截斷
sigmod/tanh..
啟用函式
對於很多操作,例如div、mul、pow、fmod等,pytorch都實現了運算子過載,所以可以直接使用運算子。如a ** 2
等價於torch.pow(a,2)
,a * 2
等價於torch.mul(a,2)
。
其中clamp(x, min, max)
的輸出滿足以下公式:
clamp
常用在某些需要比較大小的地方,如取乙個tensor的每個元素與另乙個數的較大值。
in [71]:
a = t.arange(0, 6).view(2, 3).float()out[71]:t.cos(a)
tensor([[ 1.0000, 0.5403, -0.4161],in [72]:[-0.9900, -0.6536, 0.2837]])
a % 3 # 等價於t.fmod(a, 3)out[72]:
tensor([[0., 1., 2.],in [73]:[0., 1., 2.]])
a ** 2 # 等價於t.pow(a, 2)out[73]:
tensor([[ 0., 1., 4.],in [74]:[ 9., 16., 25.]])
# 取a中的每乙個元素與3相比較大的乙個 (小於3的截斷成3)print(a)
t.clamp(a, min=3)
tensor([[0., 1., 2.],out[74]:[3., 4., 5.]])
tensor([[3., 3., 3.],in [75]:[3., 4., 5.]])
b = a.sin_() # 效果同 a = a.sin();b=a ,但是更高效節省視訊記憶體out[75]:a
tensor([[ 0.0000, 0.8415, 0.9093],[ 0.1411, -0.7568, -0.9589]])
pytorch逐元素比較tensor大小
import torch a torch.tensor 0.01,0.011 0.009,0.9 mask a.gt 0.01 print mask tensor比較大小可以用tensor.gt屬性。上面比較了a中每個元素和0.01的大小,大於0.01的元素輸出true。輸出結果 tensor fa...
Tensor索引操作
tensor索引操作 tensor支援與numpy.ndarray類似的索引操作,語法上也類似 如無特殊說明,索引出來的結果與原tensor共享記憶體,即修改乙個,另乙個會跟著修改 import torch as t a t.randn 3,4 tensor 0.1986,0.1809,1.4662...
常用的Tensor操作
1 通過tensor.view方法可以調整tensor的形狀,但必須保證調整去前後元素總數一致。view不會修改自身的資料,返回新的tensor與原tensor共享記憶體,即更改其中的乙個,另乙個也會跟這改變。2 實際中經常需要新增或減少某一維度,可用squeeze和unsqueeze這兩函式。im...