728x90
반응형

Tensors 소개

파이토치에서 텐서는 모델의 파라미터(매개변수)와 모델의 입력과 출력을 인코딩하기 위해 사용한다.

 

텐서는 numpy 라이브러리의 다차원 행렬 자료구조인 ndarray와 비슷하다. 다만, 텐서는 계산량이 많아 GPU에서 계산해야한다.

import torch
import numpy as np

Tensor Initialization(초기화) 

1. 리스트 

list[]는 바로 텐서로 변환할 수 있다.

data = [[1,2],[3,4]]
x_data = torch.tensor(data)

2.배열

ndarray는 torch.from_numpy(np_array)를 통해 텐서로 변환할 수 있다.

(np.array 함수는 ndarray를 만드는 함수이다.)

np_array = np.array(data)
x_np = torch.from_numpy(np_array)

3.다른 텐서 

명시적으로 재정의하지 않는 한, 매개변수로 받은 텐서의 shape, datatype등 속성을 그대로 받는다.  

ones_like 함수 : 인자로 받은 텐서와 같은 shape의 1로 가득한 텐서로 변환

rand_like 함수 : 사이즈를 튜플로 입력하지 않고 인자텐서로 정의하고 랜덤 값 텐서로 변환

x_ones = torch.ones_like(x_data) # x_data의 속성을 물려받음
print(f"Ones Tensor: \n {x_ones} \n")

x_rand = torch.rand_like(x_data, dtype=torch.float) # 명시적으로 데이터 타입을 재정의함
print(f"Random Tensor: \n {x_rand} \n")

out:

Ones Tensor:
 tensor([[1, 1],
        [1, 1]])

Random Tensor:
 tensor([[0.2657, 0.4719],
        [0.8944, 0.3807]])

4. 랜덤 값 또는 상수 값 사용

shape은 텐서의 차원을 나타내는 행렬이다.

torch.rand(shape) 함수 : 랜덤값으로 텐서 초기화

torch.ones(shape) 함수 : 모두 1로 초기화

torch.zeros(shape) 함수 : 모두 0으로 초기화

shape = (2,3,)
rand_tensor = torch.rand(shape)
ones_tensor = torch.ones(shape)
zeros_tensor = torch.zeros(shape)

print(f"Random Tensor: \n {rand_tensor} \n")
print(f"Ones Tensor: \n {ones_tensor} \n")
print(f"Zeros Tensor: \n {zeros_tensor}")

out:

Random Tensor:
 tensor([[0.8177, 0.7039, 0.9206],
        [0.2288, 0.7906, 0.9867]])

Ones Tensor:
 tensor([[1., 1., 1.],
        [1., 1., 1.]])

Zeros Tensor:
 tensor([[0., 0., 0.],
        [0., 0., 0.]])

Tensor 속성

Tensor attributes : shape, datatype, and the device

-shape : 몇차원 배열인지

-dtype : 텐서의 데이터 타입

-device : 텐서가 저장된 장치  


 

728x90
반응형

'딥러닝, 머신러닝 기초 > Pytorch' 카테고리의 다른 글

Tensor 연산  (0) 2021.04.25

+ Recent posts