1.24(월) - pytorch basics

ivor·2022년 1월 24일
1

부스트캠프 AI TECH

목록 보기
6/18

2주차에 접어들었다. 강의시수가 저번주에 비해 현저히 줄어들어서 좋아했는데 과제 양이 엄청나게 많아졌다 😇

본격적으로 pytorch에 대해 배우기 시작했다. 모델을 만들고 구현하는 데에 직결되어 있는 부분이라 조금 긴장이 되기도 했다. 여기서 기초를 탄탄히 다지지 못하면 나중에 두고두고 발목을 잡힐 게 뻔하니까.


pytorch

Deep-Learning Framework

다양한 프레임워크가 존재한다. 1주차에는 GD 등을 실제로 하나하나 구현해보는 연습을 했지만 실제로는 코드를 line-by-line로 모두 짜기보다는 잘 만들어진 프레임워크를 활용한다.

가장 유명한 프레임워크를 몇가지 뽑자면 역시 Tensorflow, Pytorch, Keras이다.
강사님이 몇가지 특징과 장단점 등을 알려주셨는데 대강 요약해보자면

  • Keras, TF
    • high level api
    • slow, simple, more readable, user-friendly
    • define and run
  • Pytorch
    • low & high level
    • fast, large datasets
    • dynamic computation graph(define by run)

과거에는 TF가 훨씬 더 많이 쓰였다는데 최근에 가까워질수록 pytorch의 점유율이 빠르게 상승했다고 한다. 이외에도 여러가지 이유를 들어주셨고 결국 앞으로 중점적으로 배우게 될 프레임워크는 pytorch가 되었다.

  • pytorch의 특징
    • numpy : numpy 구조의 tensor 객체로 array 표현.
    • autograd : 자동 미분. DL 연산.
    • functions : 다양한 함수와 모델.

pytorch basics

numpy & pytorch

numpy의 ndarray에는 pytorch의 tensor가 대응된다. pytorch는 matrix 등을 tensor 객체로 표현한다.

import numpy as np

n_arr = np.arange(15).reshape(3,5)

t_arr = torch.tensor(n_arr)

tensor handling

numpy에서와 마찬가지로 torch에도 tensor를 다룰 수 있는 다양한 방법이 존재한다.

몇가지만 예로 들자면...

  • view()
    numpy의 reshape과 유사하게 size(shape)를 바꿀 수 있다.
    다른 점이라면 view는 original tensor의 값이 변경될 경우 resize된 tensor의 값 또한 바뀐다는 것.
    무슨 말이냐 하면
a = torch.tensor([[1,2],[3,4]])
b = a.view(4)
a[1][1] = torch.tensor([5])
# b의 마지막 값도 5로 변경됨

이렇게 a의 값을 변경할 경우 b에도 그 변화가 적용된다는 것이다.
(numpy의 reshape은 그렇지 않다)

  • squeeze()
    1인 차원 삭제(압축)
  • unsqueeze()
    차원 추가
  • a.mm(b)
    행렬 a와 b의 행렬곱
  • a.matmul(b)
    역시 행렬곱
    이때, matmul()은 mm()과 다르게 broadcasting을 지원한다
  • torch.nn
  • autograd
  • chunk
  • swapdims
  • scatter_

환경 설정

  • 터미널
    • conda create -n [가상환경 이름]
    • conda activate
    • conda install pytorch
    • (code, jupyter notebook 등 실행)
    • conda deactivate

Questions

  • pytorch를 import해서 사용할 수 있는 다양한 환경이 있다.(ex. colab, jupyter notebook, vscode)
    • 그런데 colab, jupyter notebook에서는 import torch가 정상적으로 동작하는데 vscode에서는 동작하지 않는다.
    • 분명 conda 가상환경도 만들고 conda list로 pytorch가 설치된 것도 확인했다.
      vscode에서 interpreter 환경 또한 pytorch가 설치된 가상환경으로 잡아줬다.
      그런데 왜! 왜 안되는 걸까 😳
  • axis 혹은 dim 관련해서 tensor의 형태 등은 이제 알겠다. 그러나 아직 익숙치 않아서 좀 더 확실하게 개념을 다듬을 필요가 있다.
  • 과제를 해결하고 나아가서 DL 실습을 해보려면 torch의 다양한 모듈과 함수를 더 알아야 한다.

회고

역시 환경 설정이 제일 어렵고 짜증난다 🥺
이것 또한 공부겠지만... 이럴 때마다 시간이 정말 아깝다.
torch의 여러 함수들을 더 공부할 시간, 운동할 시간이 vscode에서 import torch가 안되는 문제 때문에 사라졌다.(심지어 해결도 되지 않았다)

어쩌면 문제를 해결하지 못하는 나 자신에 대한 짜증일지도 모르겠다. 나는 개발자라는 직업에 적성이 맞는걸까? 이런 문제가 발생했을 때 해결책을 찾기 위해 깊게 파고드는 것을 즐기는 사람이 개발자에 어울리는 것 아닐까? 나는 다른 문제들 때문에 내가 집중하고자 했던 문제에서 멀어지는 상황이 정말 싫다.

하지만 그래도 결국 내일도 다시 정진해야 할 것이다. 개발자가 나에게 맞지 않는 길이라 해도 5개월의 시간은 집중하기로 했으니까. 내일은 부디, 이 문제를 해결하고 집중하고자 했던 문제들에 집중할 수 있기를.

profile
BEST? BETTER!

1개의 댓글

comment-user-thumbnail
2022년 1월 28일

당신의 지식에 감탄하고 갑니다..! 👍

답글 달기