전체 글

전체 글

    [Utilities] Pillow-SIMD

    [Utilities] Pillow-SIMD

    Introduction Pytorch를 이용해 이미지/비디오 데이터를 학습한다 했을 때, 데이터를 augment 하기 위해서는 보통 torchvision의 transform 모듈을 흔히 이용한다. 기본적으로 Pytorch의 torchvision 라이브러리는 PIL (Python Imaging Library) Image 모듈 혹은 torch Tensor 모듈을 이용해 이미지 데이터를 다루도록 짜여져 있기 때문에, 각종 학습에 필요한 image transformation을 정의할 때에는 PIL Image 모듈의 멤버 함수나, PIL Image를 인자로 받을 수 있는 함수들을 빈번하게 이용하게 된다. 아래는 torchvision.transform 모듈의 함수 예시로, PIL Image 혹은 torch Tens..

    [Utilities] Git: Make sure you configure your 'user.name' and 'user.email' in git

    [Utilities] Git: Make sure you configure your 'user.name' and 'user.email' in git

    Introduction 작업 중이던 깃 리포지토리를 새로 클론 하고, 새 코드를 신나게 작성한 후 vscode와 같은 IDE를 통해 커밋 명령어를 실행시키는 순간 다음과 같은 에러 메시지와 마주할 때가 있다. Make sure you configure your 'user.name' and 'user.email' in git 깃 사용법을 정석적으로 배운 사용자라면 이럴 일은 없겠지만, 본인은 읽으라는 도큐멘테이션은 안 읽고 야매로 이것저것 눌러보면서 배운 터라 매번 까먹고 위와 같은 에러 메시지를 보는 경우가 많다. 이번엔 왜 이런 메시지가 등장하며, 어떻게 메시지의 말대로 user name과 user email를 설정해 줄 수 있는 지 간단히 알아보도록 하자. 깃 커밋을 수행할 때는, 누가 코드를 처음 ..

    [Python] 독스트링 (Docstrings)

    [Python] 독스트링 (Docstrings)

    Introduction 파이썬은 동적 타입 언어(참고)라는 특성 때문에 코드의 문서화가 다른 언어에 비해 특히 더 중요하다. 하지만 코드를 개발하면서 따로 잘 정리된 문서를 작성하는 일은 만만치 않은 작업일 것이다. 또한 코드 설명 내용을 찾기 위해 주석을 일일이 뒤지거나 도큐멘테이션을 찾으러 다니는 것 또한 꽤 번거로운 일이다. 파이썬에서는 코드의 문서화와 편리한 문서 참조를 위해 기본 기능으로 독스트링(Docstring) 이라는 기능을 제공하는데, 오늘은 이것에 대해 알아볼 생각이다. Docstrings 독스트링은 함수나 클래스, 모듈에 첨부할 수 있는, 큰 따옴표 세 개 (""") 혹은 작은 따옴표 세 개 (''')로 둘러싸여진 문자열이다. PEP 8 (Python Enhancement Propos..

    [Review] Unsupervised Learning of Video Representations using LSTMs

    [Review] Unsupervised Learning of Video Representations using LSTMs

    paper link: arxiv.org/pdf/1502.04681.pdf github: github.com/mansimov/unsupervised-videos github (PyTorch): github.com/JoungheeKim/autoencoder-lstm 최근 self-supervised learning을 이용한 비디오 데이터의 representation learning 쪽을 조사해 봐야겠다는 생각을 하고 있었는데, 마침 관련된 논문들을 리스트업 해 놓은 깃허브가 있어 맨 첫번째 논문부터 시작해 몇 개를 골라 리뷰를 할 생각이다. 이번에 정리할 논문은 ICML2015에 올라온 Unsupervised Learning of Video Representations using LSTMs 이다. 간단히 요..

    [PyTorch] RuntimeError: Trying to backward through the graph a second time

    [PyTorch] RuntimeError: Trying to backward through the graph a second time

    Introduction 파이토치를 이용해 다양한 모델을 구현하다 보면, 아래와 같은 에러 메시지를 한번 쯤은 마주할 것이다. RuntimeError: Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time 오늘은 이 에러 메시지가 어떤 상황에서, 어떤 이유로 출력되는 지 알아보고, 그 해결 방법에 대해 간략히 설명할 예정이다. Autograd Mechanism 기본적으로 파이토치의 autograd 메커니즘은 requires_grad=True 로 설정된 텐서들에 대해, 텐서 데이터가 생..

    [Python] 모듈 단위의 exception 계층 구조

    [Python] 모듈 단위의 exception 계층 구조

    Introduction 지난번에는 예외 처리와 관련해서, 왜 단순한 try, except 문을 사용하지 말아야 하는 지를 간단히 알아봤다. 이전 글 이번에는 파이썬 모듈을 작성할 때 어떤 식으로 예외를 발생시키는 것이 바람직한지에 대해 소개해보려 한다. 결론부터 말하자면, 모듈 최상위 예외 클래스를 이용해 계층 구조를 가지는 예외 클래스를 이용하는 것이 기본 파이썬 예외 클래스를 사용하는 것 보다 훨씬 편리하다고 할 수 있다. Possible problem of using built-in exeptions 먼저, 간단한 사용자 모듈을 하나 생성해 보자. 날아가는 물체의 착륙 지점을 계산하기 위한 코드이다. user_module.py # user_module.py from math import sin, c..

    [Utilities] Tmux 입문

    [Utilities] Tmux 입문

    Introduction 리눅스 서버 환경에서 자주 사용되는 tmux는 terminal multiplexer의 한 종류로, 하나의 터미널 콘솔에서 여러 개의 터미널을 생성하고 관리할 수 있는 기능을 제공한다. 생성한 터미널 세션들은 터미널 콘솔과 독립적으로 background에서 실행되어, 사용자가 직접 세션을 종료하거나 컴퓨터가 종료되지 않는 한 프로세스가 지속되며 생성된 세션은 여러 유저로부터 동시에(!) 접속하는 것도 가능하다. 이런 특성은 많은 수의 커맨드 명령어 기반 프로세스를 안정적으로 실행시켜야 할 때 유용하다. 오늘은 tmux의 사용법에 대해 간략히 정리해 보겠다. 1. Installation $ sudo apt-get install tmux tmux가 설치되어 있지 않다면, 터미널에서 ap..

    [PyTorch] 모델 파라미터 초기화 하기 (parameter initialization)

    [PyTorch] 모델 파라미터 초기화 하기 (parameter initialization)

    Introduction 슬슬 딥러닝 프레임워크에 대해서도 포스트를 올리려 한다. 주로 쓰는 프레임워크는 파이토치(PyTorch) 이며, 간간히 유용하다 싶은 기능들을 찾으면 하나씩 정리해 올릴 생각이다. 새롭게 안 정보를 정리도 할 겸, 공유도 할 겸 적는 글들이니 편하게 봐 줬으면 한다. 이번에는 파이토치에서 모델의 파라미터를 초기화(initialize) 하는 방법에 대해 포스팅한다. 1. Weight Initialization Mechanism 사실 파이토치에서는 기본적인 모듈 클래스(Linear, ConvNd 등) 를 초기화 할 때, 자동으로 파라미터를 적절히 초기화 해 주고 있다. 하나의 예시로, nn.modules의 Linear 클래스의 이니셜라이저를 살펴 보자. class Linear(Modu..