오픈소스 머신 러닝 프레임워크인 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
'AI > PyTorch' 카테고리의 다른 글
[Pytorch] Dataset과 DataLoader (0) | 2023.03.16 |
---|---|
[PyTorch] 파라미터 구현하기 (0) | 2023.03.16 |
[PyTorch] 신경망 모델과 torch.nn.module (0) | 2023.03.16 |
[PyTorch] torch.reshape과 torch.Tensor.view의 차이 (0) | 2023.03.14 |
[PyTorch] torch.mm과 torch.matmul의 차이 (0) | 2023.03.14 |