常用的Tensor操作

2022-07-20 02:51:11 字數 1428 閱讀 6768

1、通過tensor.view方法可以調整tensor的形狀,但必須保證調整去前後元素總數一致。view不會修改自身的資料,返回新的tensor與原tensor共享記憶體,即更改其中的乙個,另乙個也會跟這改變。

2、實際中經常需要新增或減少某一維度,可用squeeze和unsqueeze這兩函式。

import torch as t

a = t.arange(0,6)

b = a.view(2,3) #調整tensor的形狀,不會修改自身資料

c = a.view(-1,3) #-1自動計算大小

'''a = tensor([0, 1, 2, 3, 4, 5])

b = tensor([[0, 1, 2],

[3, 4, 5]])

c = tensor([[0, 1, 2],

[3, 4, 5]])'''

b = b.unsqueeze(1) #在第一維(下標從0開始)上增加「1」

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

[[3, 4, 5]]])'''

c = c.unsqueeze(-2)

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

[[3, 4, 5]]])'''

d = b.view(1,1,1,2,3)

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

[3, 4, 5]]]]])'''

d = d.squeeze(0) #壓縮第0維的「1」

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

[3, 4, 5]]])'''

d = d.squeeze() #所有維度為「1」的壓縮

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

[3, 4, 5]])'''

3、resize是另一種可用調整size的方法,但與view不同,它可以修改tensor的尺寸。如果新尺寸超過原尺寸,會自動分配新的記憶體空間,而如果新尺寸小於原尺寸,則之前的資料依舊會被儲存。

b.resize_(1,3) #resize_調整size,新尺寸小於原尺寸,則之前的保留

'''tensor([[0, 1, 2]])'''

b.resize_(3,3) #resize_調整size,新尺寸大於原尺寸,會自動分配新的記憶體空間

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

[ 3, 4, 5],

[7526747973031060338, 7306812055932138085, 8389969046800051066]])'''

2018-10-23 17:59:12

Tensor索引操作

tensor索引操作 tensor支援與numpy.ndarray類似的索引操作,語法上也類似 如無特殊說明,索引出來的結果與原tensor共享記憶體,即修改乙個,另乙個會跟著修改 import torch as t a t.randn 3,4 tensor 0.1986,0.1809,1.4662...

Tensor 逐元素操作

逐元素操作 這部分操作會對tensor的每乙個元素 point wise,又名element wise 進行操作,此類操作的輸入與輸出形狀一致。常用的操作如表3 4所示。表3 4 常見的逐元素操作 函式功能 abs sqrt div exp fmod log pow.絕對值 平方根 除法 指數 求餘...

Pytorch中的Tensor常用的型別轉換函式

pytorch中的tensor常用的型別轉換函式 inplace操作 1 資料型別轉換 在tensor後加.long int float double 等即可,也可以用.to 函式進行轉換,所有的tensor型別可參考 2 資料儲存位置轉換 cpu張量 gpu張量,使用data.cuda gpu張量...