Fly ai 4기 4주차 day 24 : 파이토치

이성원·2024년 1월 22일
0

파이토치 특징 및 장점

  1. 텐서(Tensor): 파이토치에서 텐서 의미는 다음과 같음

    • 텐서는 파이토치의 데이터 형태
    • 텐서는 단일 데이터 형식으로 된 자료들의 다차원 행렬
    • 텐서는 간단한 명령어(변수 뒤에 .cuda() 를 추가)를 사용해서 GPU로 연산을 수행하게 할 수 있음
  2. 동적 신경망: 훈련을 반복할 때마다 네트워크 변경이 가능한 신경망을 의미

    • 예를 들어 학습 중에 은닉층을 추가하거나 제거하는 등 모델의 네트워크 조작이 가능
    • 연산 그래프를 정의하는 것과 동시에 값도 초기화되는 'Define by Run'방식을 사용
    • 연산 그래프와 연산을 분리해서 생각할 필요가 없기 때문에 코드를 이해하기 쉬움

파이토치 모델 파라미터

  1. 손실 함수(loss function): 학습하는 동안 출력과 실제 값(정답) 사이의 오차를 측정

    • BCELoss: 이진 분류를 위해 사용
    • CrossEntropyLoss: 다중 클래스 분류를 위해 사용
    • MSELoss: 회귀 모델에서 사용
  2. 옵티마이저(optimizer): 데이터와 손실 함수를 바탕으로 모델의 업데이트 방법을
    결정

    • optimizer는 step() 메서드를 통해 전달받은 파라미터를 업데이트
    • 모델의 파라미터별로 다른 기준( 학습률)을 적용시킬 수 있음
    • torch.optim.Optimizer(params, defaults)는 모든 옵티마이저의 기본이 되는 클래스
    • zero_grad() 메서드는 옵티마이저에 사용된 파라미터들의 기울기(gradient)를 0으로 만듦
    • torch.optim.lr_scheduler는 에포크에 따라 학습률을 조절할 수 있음
  3. 학습률 스케줄러(learning rate scheduler): 미리 지정한 횟수의 에포크를 지날때마다 학습률을 감소(decay)시켜 줌

    • optim.lr_scheduler.LambdaLR: 람다(lambda) 함수를 이용하여 그 함수의 결과를 학습률로 설정

    • optim.lr_scheduler.StepLR: 특정 단계(step)마다 학습률을 감마(gamma) 비율만큼 감소시킴

    • optim.lr_scheduler.MultiStepLR: StepLR과 비슷하지만 특정 단계가 아닌 지정된 에포크에만 감마비율로 감소시킴

    • optim.lr_scheduler.ExponentialLR: 에포크마다 이전 학습률에 감마만큼 곱함

    • optim.lr_scheduler.CosineAnnealingLR: 학습률을 코사인(cosine) 함수의 형태처럼 변화시킴,학습률이 커지기도 작아지기도 함

    • optim.lr_scheduler.ReduceLROnPlateau: 학습이 잘되고 있는지 아닌지에 따라 동적으로 학습률을 변화시킬 수 있음

Anaconda 실습

conda 설치
https://www.anaconda.com/download

conda 생성

#python 3.9버전으로 가상환경 생성
conda create -n conda_prac python=3.9.0
#가상환경 활성화
conda activate conda_prac

잘못 생성한 가상환경 삭제

conda env remove -n conda_practice

파이토치 설치
https://pytorch.kr/get-started/locally/

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

주피터노트북 설치

pip install jupyter notebook

#현재 환경에서 주피터 노트북 실행
jupyter notebook

cuda 환경을 맞춘 후에 pytorch 실습을 하였는데 1, 2주차에 했던 실습을 jupyter notebook에서 진행하는 느낌이라 이후 실습 내용은 간단하게 요약만 했다.

텐서 조작

차원 조작

신경망 구조

합성곱 신경망 구조(cnn)

전이학습

profile
개발자

0개의 댓글

관련 채용 정보