PangLog
PangLog_k.k
PangLog
전체 방문자
오늘
어제
  • Category (77)
    • 💾기록 (2)
      • 📔기록 (2)
    • 🔧알고리즘 (10)
    • ⚡AI (17)
      • ∃Mathematics (11)
      • AI (5)
      • 논문 (1)
    • 👨‍💻Data Science (2)
    • 📚CS (4)
      • 📡컴퓨터 네트워크 (3)
      • 💾DB (0)
      • ⚙OS (1)
    • ⌨Programming (15)
      • Python (6)
      • Pytorch (3)
      • FastAPI (0)
      • Java (1)
      • Spring (3)
      • Elastic Search (2)
    • 💻 (23)
      • Git (9)
      • Issue sol (2)
      • Linux (2)
      • etc (7)
      • Web (2)
      • Docker (1)
    • 📰칼럼 (4)
      • IT (4)
      • 그 외 (0)
    • Review (0)

블로그 메뉴

  • 홈
  • Github

인기 글

최근 글

태그

  • URL URI 차이
  • 인퍼런스
  • inference
  • 11660
  • BOJ
  • pycham
  • 알고리즘
  • 5215
  • 프로그래머스
  • 내부단편화
  • SWEA
  • 쥬피터랩
  • cors
  • 외부단편화
  • Python
  • 파이참
  • 백준
  • 백준허브 이슈
  • 파이썬
  • 옹알이(1)
  • 백준허브
  • Jupyter Lab
  • 깃허브
  • 백준허브 에러
  • 자바
  • Java
  • 탐색적 데이터 분석
  • 프로그래머스 체육복
  • cv2
  • K-디지털트레이닝 해커톤
hELLO · Designed By 정상우.
PangLog

PangLog_k.k

[pytorch] 모델제작(torch.nn.Module)
⌨Programming/Pytorch

[pytorch] 모델제작(torch.nn.Module)

2022. 1. 26. 00:19

어떻게 딥러닝 모델을 만들까?

  • 단순하게 기능만 나열한다면 보기도 힘들고 수정도 힘들 것이다
  • PyTorch에는 모델을 만들기 위한 기능들을 모아 놓은 클래스를 제공한다, 이것이 바로 nn.Module이다 ! 아래의 Documents를 통해 다양한 설명을 볼 수 있다
  • [Pytorch 공식 Documents](https://pytorch.org/docs/stable/generated/torch.nn.Module.html?highlight=nn%20module#torch.nn.Module)

 

nn.Module


  • 딥러닝 모델의 Layer의 기본적인 class
  • Input, Output, Forward, Backward같이 모델에 필요한 것들을 정의
  • 학습의 대상이되는 parameter(tensor) 정의

레이어를 쌓는다는 것(모델 제작)은 마치 블럭을 잘조립해 무엇가를 만드는 것과 비슷하다. 똑같은 기능을 하는 레고들을 여러개 조립한 후 크게 만들 수도 있고 여러개를 무작정 섞은 채로 무언가를 만들 수도 있다.

 

즉, 레고를 어떻게 조립하냐에 따라 멋진 성이 될 수도 엉망진창 와진창이 될 수도 있다.

 

- 이때 nn.Module을 어떻게 사용/모아 놓느냐에 따라 다른 의미를 가진다 

 

1. nn.Module에 기능들을 모아놓은 경우 basic building block이라 한다.

2. nn.Module에 basic building block인 nn.Module을 모아 놓은경우 딥러닝 모델이라 한다.

3. 2번을 모아놓으면 더욱 큰 딥러닝 모델이다.

Auto Grad


epoch이 돌아가는 과정을 살펴보자!(모델 학습을 시키는 과정)

  • 모델을 학습시에는 크게 4가지 단계를 거쳐야한다
    1. 이전 gradient의 영향을 받지않기 위해 그레디언트를 초기화 해준다
    2. 모델에 input을 넣어 output을 계산한다
    3. loss func을 통해 output과 label의 차이를 얻고 backward를 통해서 gradients를 얻는다
    4. 파라미터를 업데이트 해나간다(weight update)

여기서 볼 수 있듯, 학습을 시키면서 파라미터를 수정해나가는 과정은 아!주! 중요하다

그 과정을 알아보자

  • 모델을 학습시킬 때 Forward의 결과값(output)과 label(실제값)의 차이(loss)에 대해 미분을 수행하며 해당 값으로 파라미터를 업데이트 시켜야한다
  • pytorch는 backward함수를 통해 자동 미분을 지원한다!
반응형
저작자표시 비영리 변경금지 (새창열림)

'⌨Programming > Pytorch' 카테고리의 다른 글

[pytorch]모델저장&불러오기  (0) 2022.01.27
[pytorch]Pytorch란 ?  (0) 2022.01.25
    '⌨Programming/Pytorch' 카테고리의 다른 글
    • [pytorch]모델저장&불러오기
    • [pytorch]Pytorch란 ?
    PangLog
    PangLog

    티스토리툴바