PyTorch 시리즈(3): tensor 생성 작업 전체

20572 단어 Pytorch

다음 매개변수의 생략 번호는 dtype, requires 를 나타냅니다.grad 등 일반 매개 변수입니다.


하나,


torch.tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False) → Tensor


1. 데이터로 tensor 만들기


2、torch.tensor는 데이터에서 데이터를 복사합니다. 생성된 tensor는 데이터와 메모리를 공유하지 않습니다. (데이터를 바꾸면 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')

2.


torch.sparse_coo_tensor(indices,values,size=None,dtype=None,device=None,requires grad=False)→Tensor:COO 형식으로 드문드문한 tensor 만들기


COO 유형은 0이 아닌 요소의 좌표 형식을 나타냅니다.

# 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: 데이터에 tensor 생성


데이터가 이미 tensor이고 dtype과 device가 매개 변수와 같으면 생성된 tensor는 데이터와 메모리를 공유합니다.데이터가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.같은 이치


크기 0tensor 생성

import torch
torch.zeros(2,3)

tensor([[ 0.,  0.,  0.],
        [ 0.,  0.,  0.]])

여섯,


torch.zeros_like(input, dtype=None, …) -> Tensor


torch.ones_같은 이치


input 모양과 같은 0tensor 생성

import torch
x = torch.tensor([2,3])
y = torch.zeros_like(x)
y

tensor([ 0,  0])

7.


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.linspace(start,end,steps=100,…)->tensor


start에서 end 사이에 고르게 분포된 steps 개수를 생성합니다

import torch
x = torch.linspace(2,7,5)
x

tensor([ 2.0000,  3.2500,  4.5000,  5.7500,  7.0000])

9.


torch.eye(n,m=None,…)


모양은 (n, m)이고 대각선은 1이며 나머지는 0의 행렬을 생성합니다.기본값은 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: fill 크기로 크기 생성value 채워진 tensor


torch.full_like와 torch.ones_같은 이치

import torch
x = torch.full((2,3),0.5)
x

tensor([[ 0.5000,  0.5000,  0.5000],
        [ 0.5000,  0.5000,  0.5000]])

좋은 웹페이지 즐겨찾기