ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] pytorch Basic (1)
    개발자노트/네이버 부스트캠프 AI 2023. 11. 27. 22:10

    🔑Keyword

    •  custom model
    •  custom dataset, dataLoader
    •  모델 학습, 최적화
    •  hyperparameter tuning
    •  다중 GPU 활용

     

     

     

     

    computational graph

    define and run

    그래프를 먼저 정의하고 실행시점에 데이터 feed 

    = tensorflow

     

    define by run 

    실행을 하면서 그래프를 생성 

    = pytorch

     

     

     

    파이토치의 특징

    •  numpy구조를 가지는 tensor 객체로 array 표현
    •  자동미분을 지원하여 DL 연산
    •  다양한 형태의 DL을 지원하는 함수와 모델 지원

     

     


    tensor

    • 다차원 arrays를 표현하는 pytorch 클래스
    • np의 ndarray와 동일, tensorflow의 tensor와 동일
    • 함수도 거의 동일
    import torch
    x_data = torch.tensor(data)

     

     

    tensor handling

    • view : reshape과 동일하게 shape 변환
    • squeeze : 차원의 개수가 1인 차원을 삭제(압축)
    • unsqueeze : 차원의 개수가 1인 차원 추가
    💡view와 reshape의 차이

    view는 tensor가 메모리에 연속적으로 존재할 때만 사용할 수 있음
    (텐서의 원소들이 메모리상에서 인접한 위치에 저장되어 있는 경우)

    is_contiguous : tensor가 메모리에 연속적으로 존재하는지 체크하는 함수

    tensor가 contiguous하지 않는 경우
    t() - transpose연산
    permute()연산 등..

    view가 contiguous하기 때문에 copy 없이 더 빠른 연산이 가능하다.

     

     


    행렬곱셈 연산은 dot이 아닌 mm을 사용한다.

    matrix multiple

     

     

     

    🔷mm()와 matmul()의 차이

     

    tensor.mm()

    오직 2d 텐서간의 행렬 곱셈만을 지원함

     

    tensor.matmul()

    • 두 텐서간의 행렬 곱셈 뿐만 아니라, 다양한 행렬 및 텐서 연산 수행
    • 브로드 캐스팅 지원
    브로드 캐스팅(broadcasting)

    행렬이나 텐서의 차원을 자동으로 확장하여 다른 텐서와의 연산이 가능하도록 함

     

     

     


    nn.functional 모듈

     

    AutoGrad

    자동 미분

    w = torch.tensor(2.0, requires_grad=True)
    y = w**2
    z = 10*y + 25
    z.backward()
    w.grad

     

     

     

     

     


    jupyter notebook

    • 특정 환경에 종속적인 라이브러리와 설정을 포함하기 때문에 다른 환경에서 배포나 공유가 어려움
    • 셀을 재실행하면 변수의 상태가 변함 : 실행 순서 꼬일 수 있음

     

     

    pytorch project templete

    • 코드의 모듈화, 재사용성 향상
    • 실행순서 꼬임x, 유지보수, 배포의 복잡성 해결
    • 코드의 모듈을 분리하여 관리
    • 로깅, 지표, 유틸리티는 하나의 파일이 아닌 각자의 모듈 또는 파일로 관리됨

     

     

    __getitem__

    인스턴스를 리스트나 딕셔너리처럼 취급할 수 있음

    for, in연산자 사용 가능

    인자는 하나만 받음

    읽기전용으로 간주됨

     

    예) parse_config.py 에서 __getitem__ → config에 딕셔너리처럼 접근함

    댓글

Designed by Tistory.