본문 바로가기
AI

[PyTorch]Tensor-part1

by Reodreamer 2022. 9. 14.
반응형

텐서의 특징

텐서는 배열과 행렬과 비슷한 자료구조이다. PyTorch에서 텐서를 이용하여 입력과 출력, 그리고 모델의 파라미터를encode 한다.

텐서는 NumPy의 ndarray와 비슷하지만 한 가지 차이점이 있다. 그것은 텐서는 GPU를 활용하여 처리가 가능한 반면,
array는 CPU로 만 처리가 가능하다.

 

이번 포스트에선 텐서 초기화에 대해서 알아보자.

 

텐서 초기화 (Tensor Initialization)

텐서를 초기화한다는 의미는 텐서를 새로생성하거나 혹은 기존에 있던 객체를 텐서로 객체로 변경하는 것 이라고

생각하면 될것 같다. 

 

1. 직접생성 

데이터를 직접적으로 텐서화 시켜 텐서를 생성할 수 있다. 이때 데이터의 타입은 자동으로 유추하여 정해진다. 

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

 

out:

tensor([[4, 3],
        [2, 1]])

 

2. NumPy Array 로 생성

NumPy array객체를 torch.from_numpy()를 이용해 텐서를 생성할 수 있다.

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

 

 

3. 다른 텐서로 생성

다른 텐서를 명시적으로 재정의 하지 않으면 텐서를 새로 생성할 때 받아오는 텐서의 속성을 유지한다. 텐서의 속성은 (shape, datatype)을 의미한다. datatype을 재정의 하고 싶으면, 원하는 datatype을 두번째 인자로 입력하여 명시적으로 datatype을 override(덮어쓰기)한다.

x_ones = torch.ones_like(x_data) # 두번째 인자가 없으면 주어진 텐서의 속성을 유지 
print(f"Ones Tensor: \n {x_ones} \n")

x_rand = torch.rand_like(x_data, dtype=torch.float) # 두번째 인자에 따라서 속성을 override
print(f"Random Tensor: \n {x_rand} \n")

out:

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

Random Tensor: 
 tensor([[0.3695, 0.2507],
        [0.2115, 0.8286],
        [0.9574, 0.8415]]) 

 

4. 상수값과 random값을 이용하여 생성

주어진 shape안에서 임의의 값으로 텐서를 구성하는 torch.rand, 1로 구성하는 torch.ones, 0으로 구성하는 torch.zeros를 이용해 텐서를 생성할 수 있다.

shape = (4,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}\n')

out:

Random Tensor : 
 tensor([[0.4549, 0.5399, 0.3784],
        [0.2229, 0.9858, 0.2569],
        [0.5513, 0.7900, 0.7605],
        [0.5579, 0.8577, 0.7643]])

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

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

다음 포스트에선 텐서의 속성과 연산에 대해서 알아보자.

반응형

'AI' 카테고리의 다른 글

[PyTorch]Dataset과 DataLoader  (1) 2022.09.16
[PyTorch]Tensor-part2  (0) 2022.09.15
[Pytorch]패키지 기본구성  (0) 2022.09.13
[논문리뷰]Generative Adversarial Nets  (0) 2022.09.13
[논문리뷰]Playing Atari with Deep Reinforcement Learning  (0) 2022.09.05

댓글