Day_11 02. PyTorch Basics
작성일
PyTorch Basics
PyTorch Operations
- numpy + AutoGrad
Tensor
- 다차원 Arrays 를 표현하는 PyTorch 클래스
- 사실상 numpy 의 ndarray 와 동일
- 그러므로 TensorFlow 의 Tensor 와도 동일
-
Tensor 를 생성하는 함수도 거의 동일
- numpy - ndarray
import numpy as np
n_array = np.arange(10).reshape(2, 5)
print(n_array)
print('ndim :', n_array.ndim, 'shape :', n_array.shape)
- pytorch - tensor
import torch t_array = torch.FloatTensor(n_array) print(t_array) print('ndim :', t_array.ndim, 'shape :', t_array.shape)
Array to Tensor
-
Tensor 생성은 list 나 ndarray 를 사용 가능
-
data to tensor
data = [[3, 5], [10, 5]]
x_data = torch.tensor(data)
x_data
- ndarray to tensor
nd_array_ex = np.array(data)
tensor_array = torch.from_numpy(nd_array_ex)
tensor_array
Tensor data types
- 기본적으로 tensor 가 가질 수 있는 data 타입은 numpy 와 동일
- 한 가지 차이가 있음
- GPU tensor 를 쓸 수 있게 해주냐 아니냐의 차이
numpy like operations
- 기본적으로 pytorch 의 대부분의 사용법이 그대로 적용됨
- 슬라이싱
- flatten()
- ones_like
- numpy()
- shape
- dtype
- pytorch 의 tensor 는 GPU 에 올려서 사용가능
Tensor handling
- view, squeeze, unsqueeze 등으로 tensor 조정 가능
- veiw : reshape 과 동일하게 tensor 의 shape 을 변환
- copy 를 한 것이 아니라 기존의 메모리 주소를 공유하고 형태만 바꿔줌
- squeeze : 차원의 개수가 1인 차원을 삭제 (압축)
- unsqueeze : 차원의 개수가 1인 차원을 추가
- veiw : reshape 과 동일하게 tensor 의 shape 을 변환
Tensor operations
-
기본적인 tensor 의 operations 는 numpy 와 동일
- 행렬곱셈 연산은 함수는 dot 이 아닌 mm 사용
- mm : vector 간의 연산은 지원 안해줌
- dot : vector 간의 연산
- mm 과 matmult 은 broadcasting 지원 차이
- mm : broadcasting 지원 안해줌
- matmul : braodcasting 지원
Tensor operations for ML/DL formula
- nn.functional 모듈을 통해 다양한 수식 변환을 지원함
AutoGrad
-
PyTorch 의 핵심은 자동 미분의 지원 -> backward 함수 사용
-
external_grad????????? 이게 뭘까??
댓글남기기