AI/PyTorch

[PyTorch] PyTorch 기초

sangwonYoon 2023. 3. 13. 23:45

오픈소스 머신 러닝 프레임워크인 PyTorch에 대해 알아보자.


Tensor

  • PyTorch에서 사용하는 자료구조이다.
  • Numpy의 ndarray와 유사한 개념으로 사용된다.

 

numpy

import numpy as np
n_array = np.arange(10).reshape(2, 5)

print(n_array)
# 출력:
# [[0 1 2 3 4]
#  [5 6 7 8 9]]

print(f"ndim : {n_array.ndim}, shape : {n_array.shape}")
# 출력: ndim : 2, shape : (2, 5)

 

pytorch

import torch
t_array = torch.FloatTensor(np.arange(10).reshape(2, 5))

print(t_array)
# 출력:
# tensor([[0., 1., 2., 3., 4.],
#         [5., 6., 7., 8., 9.]])

print(f"ndim : {t_array.ndim}, shape : {t_array.shape}")
# 출력: ndim : 2, shape : torch.Size([2, 5])

 

tensor의 생성은 list 혹은 ndarray를 사용한다.

 

list to tensor

data = [[3, 5],[10, 5]] 
x_data = torch.tensor(data)
print(x_data)
# 출력:
# tensor([[ 3,  5],
#         [10,  5]])

 

ndarray to tensor

data = [[3, 5],[10, 5]]
nd_array_ex = np.array(data)
tensor_array = torch.from_numpy(nd_array_ex)
print(tensor_array)
# 출력:
# tensor([[ 3,  5],
#         [10,  5]])

 

numpy의 대부분의 사용법이 그대로 적용된다.

data = [[3, 5, 20],[10, 5, 50], [1, 5, 10]]
x_data = torch.tensor(data)

print(x_data[1:])
# 출력: 
# tensor([[10,  5, 50],
#         [ 1,  5, 10]])

print(x_data[:2, 1:])
# 출력:
# tensor([[ 5, 20],
#         [ 5, 50]])

print(x_data.flatten())
# 출력: tensor([ 3,  5, 20, 10,  5, 50,  1,  5, 10])

print(torch.ones_like(x_data))
# 출력:
# tensor([[1, 1, 1],
#         [1, 1, 1],
#         [1, 1, 1]])

# tensor to ndarray
print(x_data.numpy())
# 출력:
# array([[ 3,  5, 20],
#        [10,  5, 50],
#        [ 1,  5, 10]])

print(x_data.shape)
# 출력: torch.Size([3, 3])


print(x_data.dtype)
# 출력: torch.int64

 

pytorch의 tensor는 GPU에 올려서 사용할 수 있다.

print(x_data.device)
# 출력: cpu

if torch.cuda.is_available():
    x_data_cuda = x_data.to('cuda')

print(x_data_cuda.device)
# 출력: cuda:0