一、
torch.tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False) → Tensor
1、用data創建一個tensor
2、torch.tensor會從data出複製數據,意味着生成的tensor不會和data共享內存(改變data並不會改變tensor)
#data: 數據,類似於數組
#dtype: 生成的tensor類型
#device: cpu或者GPU
#requires_grad:是否進行微分
#pin_memory: 是否分配到pinned memory,僅僅適用於CPUtensor
import torch
#如果gpu可用選擇gpu,否則用cpu
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
x = torch.tensor([1.,2], dtype=torch.float64, device=device,requires_grad=True)
x
tensor([ 1., 2.], dtype=torch.float64, device='cuda:0')
二、
torch.sparse_coo_tensor(indices, values, size=None, dtype=None, device=None, requires_grad=False) → Tensor :創建一個稀疏tensor,格式爲COO類型
COO類型表示給出非零元素的座標形式
# indices:非零元素的座標,如下例的indices,indices[0]表示三個橫座標,indices[1]表示三個縱座標,因此稀疏矩陣中非零的位置分別爲(0,2),(1,0),(1,2)
# values: 非零元素的值, 如下例中的values,三個非零元素分別爲3,4,5
#size:次數矩陣的維度
indices = torch.tensor([[0, 1, 1], [2, 0, 2]])
values = torch.tensor([3, 4, 5], dtype=torch.float32)
x = torch.sparse_coo_tensor(i, v, [2, 4])
x
torch.sparse.FloatTensor of size (2,4) with indices:
tensor([[ 0, 1, 1],
[ 2, 0, 2]])
and values:
tensor([ 3., 4., 5.])
三、
torch.as_tensor(data, dtype=None,device=None)->Tensor : 爲data生成tensor
如果data已經是tensor,且dtype和device與參數相同,則生成的tensor會和data共享內存。如果data是ndarray,且dtype對應,devices爲cpu,則同樣共享內存。其他情況則不共享內存。
import torch
import numpy
a = numpy.array([1, 2, 3])
t = torch.as_tensor(a)
四、
torch.from_numpyy(ndarray) -> tensor
將numpy.ndarray數據轉換爲tensor,其tensor與ndarry共享內存
import torch
import numpy
x = numpy.array([1,2,3])
y = torch.from_numpy(x)
print(y)
#修改y的數據,x也會變化
y[0]=100
print(x)
tensor([ 1, 2, 3])
[100 2 3]
五、
torch.zeros(*sizes, out=None, dtype=None …) -> Tensor
torch.ones同理
生成一個size大小的0tensor
import torch
torch.zeros(2,3)
tensor([[ 0., 0., 0.],
[ 0., 0., 0.]])
六、
torch.zeros_like(input, dtype=None, …) -> Tensor
torch.ones_like同理
生成和input形狀一樣的0tensor
import torch
x = torch.tensor([2,3])
y = torch.zeros_like(x)
y
tensor([ 0, 0])
七、
torch.arange(start=0, end, step=1,…) ->tensor
從start開始,每step步生成一個數值,直到end
import torch
x = torch.arange(start=2, end=7, step=1.5)
x
tensor([ 2.0000, 3.5000, 5.0000, 6.5000])
九、
torch.eye(n,m=None,…)
生成形狀爲(n,m),對角線爲1,其餘爲0的矩陣。m默認等於n
import torch
x = torch.eye(3)
print(x)
y = torch.eye(3,2)
print(y)
tensor([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
tensor([[ 1., 0.],
[ 0., 1.],
[ 0., 0.]])
十、
torch.empty(*sizes, …)->tensor : 生成size大小的未經未經過初始化的數據。
torch.empty_like與torch.ones_like類似
import torch
x = torch.empty(2,3)
x
tensor([[ 0.0667, 0.0000, 3.1263],
[ 0.0000, 0.0000, 0.0000]])
十一、
torch.full(size, fill_value, …) -> Tensor :生成size大小以fill_value填充的tensor
torch.full_like與torch.ones_like同理
import torch
x = torch.full((2,3),0.5)
x
tensor([[ 0.5000, 0.5000, 0.5000],
[ 0.5000, 0.5000, 0.5000]])