본문 바로가기

머신러닝

모델 학습 및 추론 과정(논리 흐름도)

반응형
  • 개요
    • 코드에만 매몰되어 있다보니까 큰 그림을 놓치고 있는 것 같아서 정리

[파이토치 학습과정]

 

 

위 모델 학습 플로우를 수도 코드를 작성해보자

 

# 필요한 패키지 import

# hyperparameter 선언
# 선언한 hyperparameter 를 저장

# 데이터 불러오기
# dataset 만들기 & 전처리하는 코드
# dataloader 만들기

# AI 모델 설계도 만들기 (class)
# init, forward 구현하기

# AI 모델 객체 생성 (과정에서 hyperparameter 사용)
# loss 객체 생성
# optimizer 객체 생성

# ------- 준비단계 끝 -------- 
# ------- 학습단계 시작 -------- 

# loop 돌면서 학습 진행
    # [epoch]을 학습하기 위해 batch 단위로 데이터를 가져와야함
    # 이 과정이 loop 로 진행
        # dataloader 가 넘겨주는 데이터를 받아서

        # ai 모델에게 넘겨주고
        # 출력물을 기반으로 loss 를 계산하고
        # loss 를 바탕으로 Optimization 을 진행

        # 특정 조건을 제시해서, 그 조건이 만족한다면 학습의 중간 과정을 확인
            **# 평가를 진행
            # 보고 싶은 수치 확인(loss, 평가 결과 값, 이미지와 같은 meta-data 등)**
            # 만약 평가 결과가 괜찮으면
                # 모델 저장

 

 

학습의 큰 틀(데이터 전처리, 학습, 평가)은 같고, 평가 부분에 (교차 검증같은) 내용들을 코드에 녹여내려하면 수도 코드도 다음처럼 바뀔 수 있다.

# 패키지 import

# hyperparameter 설정
# hyperparameter 저장

# 데이터 불러오기
# 전처리하는 코드

# AI 모델 설계도 만들기 (class)
    # init, forward 구현하기

# ------- 준비단계 끝 --------
# ------- 학습단계 시작 --------

# 학습과 평가를 위한 kfold 객체 생성(n_splits)
# n_splits 만큼 AI 모델 객체 생성 (과정에서 hyperparameter 사용)

# loop 돌면서 학습 및 교차검증
    # kfold 객체로부터 train, validation 데이터를 받아옴
    # train, validation dataset 만들기
    # train, validation dataloader 만들기

    # loss 객체 생성
    # optimizer 객체 생성

    # train dataloader 로부터 데이터를 받아서
    # ai 모델에게 넘겨주고 loss 를 계산

    # validation dataloader 로부터 데이터를 받아서
    # (학습이 진행된) ai 모델에게 넘겨주고 loss_val 를 계산

    # loss, loss_val 을 기반으로 평가 진행
        # 보고 싶은 수치 확인(loss, 평가 결과 값, 이미지와 같은 meta-data 등)

# 평가 결과가 괜찮으면(조건 만족)
    # 모델 저장

 

[파이토치 - 추론과정]

 

  •  결론
    • 코드 형태에 정답이 있는건 아니다
    • 전체적인 플로우는 단순한 편이고, 개별 모델에 대한 코드, 데이터 전처리, 평가 부분에 해당하는 코드를 별도로 작성해나가면 된다
반응형

'머신러닝' 카테고리의 다른 글

경사하강법(Gradient Discent)  (1) 2023.11.01