본문 바로가기
AI 공부/딥러닝

딥러닝 (pytorch)

by AI Sonny 2022. 10. 2.
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

댓글