Pretrained 된 딥러닝 모델을 좀 더 학습시키고 싶을 때, 코드에 손대지 않고 내가 갖고 있는 데이터를 알맞게 수정해야 하기도 한다. 최근에는 tsv 데이터셋으로 학습된 모델을 Finetuning 하게 되어 갖고 있던 데이터셋을 변환해야 했다. 1. TSV 파일 tsv 는 Tab-Separated-Values 의 약자로 tab을 통해 구분되어 있는 파일이다. tsv 파일은 결국 콤마(Comma)로 구분되어 있는 csv 파일과 유사하다. 다만 구분자(delimiter)가 tab으로 이루어져 있다는 차이가 있을 뿐이다. 2. TSV 파일 읽고 쓰기 구분자의 차이만 있기 때문에 pandas를 통해 csv 파일을 읽고 쓰는 것과 같은 방법으로 tsv를 읽고 쓸 수 있다. import pandas as p..
딥러닝 모델을 학습시킬 때 학습 진척도(progress bar)를 살필 수 있는 방법으로 tqdm 패키지가 사용된다. 1. tqdm 패키지 설치!pip install tqdm 2. 기본 예제기본적으로 tqdm에 iteration이 가능한 객체를 입력하면 된다. tqdm(range(10))from tqdm import tqdmimport timen = 10for i in tqdm(range(n)): time.sleep(1)다른 설정이 없다면 progress bar는 진행도와 시간이 표시된다.진행도(%) | 완료 횟수(i) / 전체 반복 횟수(n) [현재까지 걸린 시간 3. 옵션1) 많이 사용되는 옵션: desc, postfix, unitdesc는 progress bar의 prefix(전위표기법)으..
개발에 있어서 개발 환경은 매우 중요한 요소이다. 딥러닝 모델을 구성할 때도 pytorch 버전에 따라 명령어가 차이가 나기 때문에 현재 진행하는 프로젝트에 어떤 패키지들이 어떤 버전으로 설치되어 있는지 기록해 두는 것이 중요하다. requirements.txt 파일은 현재 개발 환경(python)에 pip를 통해 설치된 모든 패키지 목록이 버전과 함께 기록되는 곳이다. 1. requirements.txt 생성 명령어 requirements.txt 파일을 만드는 방법은 두 가지가 있다. pip freeze 명령어를 사용하는 법 pip list 명령어를 사용하는 법 1.1. pip freeze 명령어 pip freeze > requirements.txt pip freeze를 사용하여 requirements..
Model 앞서 구현한 Layers를 활용하여 Encoder와 Decoder의 class를 구현하고, 이를 합하여 Transformer class를 구현하였다. [목차] Encoder Decoder Transformer 1. Encoder Encoder에서는 Input Embedding과 Positional Encoding이 더해져 Encoder Layer에 입력되며 Encoder Layer는 N번 반복되었다. 논문에 따르면 Encoder Layer에 입력되기 전 dropout이 적용되었으며, Encoder Layer가 총 6번 반복되었다. 1.1. 알고리즘 순서 입력에 대한 input embedding, positional encoding 생성 add & dropout input embedding과 p..
Layers 먼저 구현한 Sub Layers와 PyTorch에서 제공하는 LayerNorm 함수를 활용하여 Encoder Layer와 Decoder Layer의 class를 구현하였다. 논문에서 mask는 Decoder Layer에서 한번 사용되었지만 padding token의 학습이 안되어도 됨으로 해당 내용을 추가하여 모든 Attention에서 mask가 사용되었다. [목차] Encoder Layer Decoder Layer 1. Encoder Layer Encoder Layer에서는 multi-head self-attention layer와 position-wise fully connected feed-forward network layer가 사용되었다. 논문에 따라 모든 Sub Layer의 out..
Embedding Transformer에서 사용되는 Embedding은 Input Embedding과 Output Embedding이 있으며, 이들과 더해지는 Positional Encoding이 있다. Input과 Output Embedding은 torch에서 제공하는 nn.Embedding을 사용하였으며, Positional Encoding은 논문에서 제시하는 수식을 따라 Positional Encoding class를 구현하였다. 1. Positional Encoding Positional Encoding은 시퀀스의 순서 (단어의 위치 정보) 를 알려주는 역할을 한다. Input과 Output Embedding이 입력될 때 Positional Encoding 정보가 더해져 Encoder와 Decod..
논문 구현에 대한 설명을 하다 보니 함수에 쓰인 수식들을 표현해야 할 때가 많다. 하지만 사용하던 티스토리 스킨에서는 수식을 캡처하여 이미지로 입력해야 했다. 그렇기 때문에 쉽고 간편하게 수식을 작성하기 위해서 LaTeX라는 수식을 멋드러지게 작성할 수 있게 도와주는 문서 작성 도구를 스킨에 적용해보려고 한다. 1. 스킨에 LaTeX를 적용하기 스킨에 LaTeX를 적용하는 방법은 간단하다. Head 에 아래 script를 추가하면 끝!이다. 출처: Configuring and Loading MathJax — MathJax 3.2 documentation 2. LaTeX로 수식 작성하기 수식을 작성하기 위해서는 몇 가지 규칙을 알아야 한다. 수식은 $$ 사이에 작성한다. 기호 앞에는 \를 붙여야 한다. (..