ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. Pytorch
    AI/3주차 2021. 8. 17. 17:35

    Pytorch vs Tensorflow

    Pytorch: Define by run (Dynamic Computation Graph) -> debug 시 편함

    Tensorflow: Define and run

    Define and Run은 코드를 직접 돌리는 환경인 세션을 만들고, placeholder를 선언하고 이것으로 계산 그래프를 만들고(Define), 코드를 실행하는 시점에 데이터를 넣어 실행하는(Run) 방식. 이는 계산 그래프를 명확히 보여주면서 실행시점에 데이터만 바꿔줘도 되는 유연함을 장점으로 갖지만, 그 자체로 비직관적이다. 그래서 딥러닝 프레임워크 중 난이도가 가장 높은 편이다.

    두 프레임워크 모두 계산 그래프를 정의하고 자동으로 그래디언트를 계산하는 기능이 있다. 하지만 Tensorflow의 계산 그래프는 정적이고 Pytorch는 동적이다. 즉 tensorflow에서는 계산 그래프를 한 번 정의하고 나면 그래프에 들어가는 입력 데이터만 다르게 할 수 있을 뿐 같은 그래프만을 실행할 수 있다. 하지만 PyTorch는 각 순전파마다 새로운 계산 그래프를 정의하여 이용한다
    • 자동미분을 지원
    • 다양한 형태의 DL을 지원하는 함수와 모델을 지원함
    • Dataset, Multi-GPU

    Pytorch Operations

    • view: reshape과 동일하게 텐서의 shape 바꿈 (reshape 말고 view 쓰기)
    • squeeze: 차원의 개수가 1인 차원 삭제
    • unsqueeze: 차원의 개수가 1인 차원 추가

    • dot: 내적 (1d 벡터간 곱셈)
    • mm: 행렬곱셈
    • matmul: 행렬곱셈 + broadcasting 지원
    • backward() 써서 자동으로 미분 계산

    Pytorch 추천 template 

    https://github.com/victoresque/pytorch-template 

    trainer.py, train.py 이해하기

     

    Pytorch 함수들

    • torch.index_select(input, dim, index):  인덱스를 선택하기 위한 함수. input Tensor의 dim의 index를 select. index의 경우 tensor이다. 리스트 인덱싱으로도 인덱스 선택 가능 
    • torch.gather(input, dim, index)

    2차원일때 gather

    댓글

Designed by Tistory.