728x90
Pytorch
- 구글의 tensorflow와 유사한 딥러닝 라이브러리
- 페이스북 인공지능 연구팀에 의해 주로 개발 (개발자들 위한 다양한 프레임워크가 나온다.)
- torch
- 텐서 변환 및 다양한 수학 함수와 클래스가 들어가 있다.
- torch.nn
- 신경망을 구축하기위한 레이어(층), 활성화 함수, 손실함수 등이 들어있다.
- torch.utils.data
- 미니배치 학습을 위한 데이터 셋을 구성하는 클래스들이 들어가 있다.
- torch.optim
- optimizer 관련된 함수와 클래스가 있다.
텐서(Tensor)
- N-차원 배열
- 텐서는 다차원 배열이나 행렬과 매우 유사한 특수한 자료구조
- Pytorch 에서는 텐서를 딥러닝 모델의 입력과 출력으로 하여 학습을 진행
텐서 만들기
- tensor 함수
- 입력받은 데이터를 텐서 객체로 반환
x = torch.tensor(data)
x
- Tensors 클래스
- 입력받은 데이터를 텐서 객체로 반환
- 다른점은 데이터 타입을 float32 로 변경해준다. (GPU에서 무조건 바꿔주어야 한다.)
x = torch.Tensor(arr)
x
차원 변경
- view 메소드
- 원소의 순서대로 차원을 변경해서 반환
x_view = x.view(3,2) # reshape과 비슷
x_view
=> tensor([[1., 2.],
[3., 4.],
[5., 6.]])
- 복사하기
x.clone()
- transpose 메소드
- 차원 맞바꾸기
- 두개의 차원만 가능
x = tensor([[100., 2., 3.], [ 4., 5., 6.]])
x.transpose(0,1) # 0번째와 1번째를 바꾸겠다는 의미
=> tensor([[100., 4.],
[ 2., 5.],
[ 3., 6.]])
- permute 메소드
- 여러개 차원 맞바꾸기
arr = np.arange(1,25).reshape(2,3,4)
arr
=> array([[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]],
[[13, 14, 15, 16],
[17, 18, 19, 20],
[21, 22, 23, 24]]])
모델 학습에 사용할 CPU or GPU 장치 확인
device = "cuda" if torch.cuda.is_available() else "cpu" # True가 나오면 GPU가 존재한다는 의미
device
- 텐서를 gpu로 이동시키기
x = x.to(device)
x
Dataset 과 DataLoader
- torch.utils.data.Dataset
- 학습데이터와 정답데이터를 인덱싱을 통해 반환하는 클래스
- torch.utils.data.DataLoader
- Dataset의 데이터를 쉽게 접근할 수 있도록 iterable한 객체로 만들어준다.
딥러닝의 순서는 Dataset 과 DataLoader를 만들고, 모델의 계층(Layer)를 정의해준다.
그 후 모델을 만들고, 학습에 필요한 손실과 최적화 등 하이퍼 파라미터 정의해주고,
학습 loop와 test loop를 만들어학습을 시키면 된다.
728x90
'AI 공부 > 딥러닝' 카테고리의 다른 글
TabNet 정리 (0) | 2022.12.12 |
---|---|
평가 지표 (0) | 2022.11.07 |
딥러닝 (RNN,LSTM,GRU) (1) | 2022.10.03 |
딥러닝 (손실함수) (0) | 2022.10.02 |
딥러닝 (경사하강법, 역전파, 배치) (1) | 2022.09.26 |
댓글