모델 내에 파라미터가 존재하는데 state_dict에 저장이 되지만, 학습 과정에서 역전파(backpropagation)을 수행할 때 optimizer에 학습되거나 update되지 않길 원한다면, 이런 경우에는 model.parameters()를 사용하지 않고 그 파라미터들을 buffer로 지정하면 됩니다. 그렇게 된다면 model.parameters()로 간주되지 않아 optimizer가 그들을 update하려고 하지 않습니다. 그렇다면 register_parameter()와 register_buffer()의 차이가 뭘까요? register_parameter()는 주어진 name을 기반으로 파라미터를 추가하는 함수입니다. 1) Optimizer가 backpropagation을 수행할 때 paramete..
str, __str__ str은 입력 받은 객체의 문자열 버전을 반환하는 함수다. 이때 주목할 점은 str은 사실 내장 함수가 아니고, 파이썬 기본 내장 클래스라는 것이다. repr, __repr__ repr은 'Representation'의 약자로 이 단어는 '표현하다'라는 뜻을 가지고 있습니다. 표현은 어떤 객체의 '본질'보다는 외부에 노출되는, 사용자가 이해할 수 있는 객체의 모습을 표현합니다. repr 함수는 어떤 객체의 '출력될 수 있는 표현'(printable representation)을 문자열의 형태로 반환합니다. 다시 말해 객체를 설명해줄 수 있는, 그리고 화면에 출력될 수 있는 문자열 표현을 반환하는 것입니다. 어떤 객체를 인자로 해서 repr 함수를 실행하면 해당 객체의 클래스에 정의..
효율적인 프로그래밍을 위해 병렬 프로그래밍을 하곤 합니다. joblib은 파이썬 프로그래밍에서 병렬처리를 가능하게 만들어줍니다. 파이썬에는 병렬 연산 디폴트 패키지로 multiprocessing이 있습니다. multiprocessing은 pandas의 DataFrame을 다루는 데에 유용하며, joblib은 일반적인 python 코딩에 두루 쓰입니다. joblib의 dump, load 메소드는 python 객체를 저장하거나 불러오게끔 할 수 있습니다. 본 게시물에서는 병렬 처리를 도와주는 joblib의 Parallel, delayed에 대한 설명을 하도록 하겠습니다. 설치 pip install joblib Thread 기반 병렬 처리 vs Process 기반 병렬 처리 joblib.Parallel은 기본..
안녕하세요 laeto입니다. 이번 글에서는 비트마스크에 대해 다뤄보도록 하겠습니다. 비트 마스크란? 컴퓨터의 최소 연산 단위는 bit입니다. bit는 이진수를 나타내기 위해 0과 1로만 이루어져 있죠. 우리는 이 비트 연산을 이용하여 문제를 빠르게 풀 수 있습니다. 예를 들어, 많은 알고리즘 문제에서 방문을 체크하는 리스트가 존재할 수 있습니다. 가령 10곳을 우리가 방문 체크해야 한다면 기존에는 아마 아래처럼 리스트를 이용하여 확인할 수 있습니다. visited = [False] * 10 하지만 비트마스크 기법을 이용한다면 똑같이 표현할 수 있습니다. visited = 0b0000000000 비트마스크에서 각 비트는 하위 주소(오른쪽)부터 인덱스를 세면 됩니다. 예를 들어 4번째 도시를 우리가 방문했다..