본 포스팅은 파이토치 튜토리얼 한글판 홈페이지 바탕으로 작성하였습니다.
pytorch tutorial - pytorch가 무엇인가요?
PyTorch가 무엇인가요?
- 파이썬 기반의 과학연산 패키지
- Numpy를 대체하면서 GPU를 이용한 연산이 필요한 경우
- 최대한의 유연성과 속도를 제공하는 딥러닝 연구 플랫폼이 필요한 경우
Tensors
초기화 되지 않은 행렬 생성
x = torch.empty(5, 3)
무작위로 초기화된 행렬을 생성
x = torch.rand(5, 3)
Returns a tensor filled with random numbers from a uniform distribution on the interval [0,1)
0 이상 1 미만의 수로 균등하게 초기화
dtype이 long이고 0으로 채워진 행렬을 생성
x = torch.zeros(5, 3, dtype=torch.long)
데이터로부터 tensor를 생성
x = torch.tensor([5.5, 3])
존재하는 tensor를 바탕으로 tensor 생성
# 5x3 크기의 1로 초기화된 tensor
x = x.new_ones(5, 3, dtype=torch.double)
# dtpye를 override
# 결과는 동일한 크기
x = torch.randn_like(x, dtype=torch.float)
tensor의 크기(shape)
print(x.size())
torch.Size([5, 3])
덧셈
# 1
y = torch.rand(5, 3)
print(x + y)
# 2
print(torch.add(x, y))
# 결과 tensor를 인자로 제공
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)
# in-place 방식
y.add_(x)
print(y)
in-place(바꿔치기) 방식으로 tensor 값을 변경하는 연산은 를 접미사로 가짐
ex) x.copy(y), x.t_()
tensor의 크기, 모양 변경
x = torch.randn(4, 4)
y = x.view(16)
# -1은 다른 차원들을 사용하여 유추(자동 계산)
z = x.view(-1, 8)
print(x.size(), y.size(), z.size())
torch.Size([4, 4])
torch.Size([16])
torch.Size([2, 8])
tensor의 값이 하나일 때, 숫자 값 추출
x = torch.randn(1)
print(x)
print(x.item())
tensor([0.8994])
0.8994463682174683
tensor->numpy 변환
a = torch.ones(5)
b = a.numpy()
numpy->tensor 변환
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
CUDA Tensors
tensor을 특정 장치(GPU)로 옮김
if torch.cuda.is_available():
device = torch.device("cuda")
# GPU 상에 직접적으로 tensor를 생성
y = torch.ones_like(x, device=device)
# `.to("cuda")` 사용
x = x.to(device)
z = x + y
print(z)
print(z.to("cpu", torch.double))
tensor([1.8994], device='cuda:0')
tensor([1.8994], dtype=torch.float64)
'프로그래머 > Pytorch' 카테고리의 다른 글
[Pytorch] 기초 강의 day1 (0) | 2020.06.15 |
---|---|
[Pytorch] VGG CIFAR-10에 적용 및 정리 (2) | 2020.06.07 |
[Pytorch] VGG 구현 및 정리 (2) | 2020.06.07 |
[Pytorch] MNIST 간단한 CNN 구현 및 정리 (0) | 2020.06.07 |
[Pytorch tutorial] Autograd: 자동미분 (0) | 2020.06.04 |