Loading...
2024. 4. 19. 03:02

Pytorch에서 padding sequence vs. packed sequence 차이 이해하고 구현하기

https://heekangpark.github.io/ml/shorts/padded-sequence-vs-packed-sequence Padded Sequence vs. Packed Sequence | Reinventing the Wheel 문제상황 자연어와 같은 sequence 데이터들을 다루다 보면 짜증나는 요소가 하나 있는데, 바로 그 길이가 일정하지 않다는 것이다. 이미지 데이터의 경우 crop이나 resize 등으로 가로 세로 크기를 맞 heekangpark.github.io 자연어같은 sequence 데이터는 input들의 길이가 다 다른 경우가 보통이기 때문에 이것을 어떻게 처리할 지 고민할 필요가 있다. 이미지는 crop이나 resize로 이미지 크기를 전부 맞추고 진행하면, batch로 ..

2024. 4. 15. 23:37

batch normalization 개념 간단하게

internal covariate shift 현상을 해결하기 위해 등장 layer를 지날수록 layer의 parameter의 변화에 따라 dataset의 분포가 변화한다고 생각한 것이다. 위와 같이 data가 layer를 지나가면서 분포가 변화한다고 생각한 것이 covariate shift 그런데 진짜있는 것인지는 논란이 많다 batch normalization은 각 layer마다 batch set을 normalization하여 분포의 변형을 막겠다는 것이다. batch의 평균과 분산을 구해서 각 입력값을 normalize 시킨다 마지막 $\gamma , \beta$는 normalize하면 activation의 nonlinearity를 잃어버리기 때문에 이를 조정하기 위함이고 학습해야하는 paramete..

2024. 3. 31. 02:11

NLP text data 전처리에서 tokenizing할 때 padding이 필요한 이유

text 데이터는 보통 길이가 서로 달라서 전처리할때 padding을 해서 길이를 맞춰준다고 보통 그러는데 왜 해야할까? 보통 batch형태로 데이터를 만들어서 모델을 학습시키는데, 길이가 서로 다르면 batch가 안만들어진다 데이터셋을 다음과 같이 구현하고 dataloader를 만들어본다 class ChatbotDataset(Dataset): def __init__(self, dataset, tokenizer, max_length = 438): self.tokenizer = tokenizer self.data = dataset self.max_length = max_length def __getitem__(self, i): inputs = tokenizer(self.data[i][1], return_t..

2023. 4. 27. 01:55

pytorch에서 data augmentation은 어떻게 이해해야하는가

data augmentation 설명하면 항상 이렇게만 설명함 “image를 랜덤하게 자르거나 확대하거나 축소하는 등 변형하여 데이터 수를 의도적으로 늘려 머신러닝 모델이 다양한 데이터를 학습하도록 유도함” 그런데 나는 항상 이런 생각을 했음 “data augmentation에서 augmentation의 뜻이 증강임..” 이 설명은 가지고 있는 data set을 증가시킨다는 느낌을 줌 그래서 처음에 augmentation 한번 구현해볼까? 하고 생각한게 transforms.Compose로 transform을 정의하고 torchvision의 transform이 제공하는 함수를 이용하여 이미지를 변형시켜 데이터를 읽어온다 이렇게 변형된 이미지 데이터셋을 처음부터 순회해서, label별로 tensor를 다시 ..

2023. 4. 24. 03:23

pytorch를 이용한 training process 기본기 완벽하게 이해하기

1. training을 위해 필요한 것? training을 위해 dataset, dataloader를 준비해서 data를 효율적으로 뽑아낼 준비를 했고 설계한 model과 loss, optimizer, learning rate, scheduler, metric 등을 준비했다면 학습 준비 완료! 2. model.train() train하기 전에 model을 trainable하게 변경시키는 함수? 그런데 분명 model 설계할 때 나는 각종 parameter의 requires_grad=True로 한것같은데 굳이 해야하나??? batchnorm이나 dropout같은 것이 training 과정이랑 evaluation 과정에서 다르게 작동해야한다고 알려져있어서 train mode와 eval mode를 구분하기 위..

2023. 2. 24. 03:45

딥러닝 모델 학습의 기본 개념 복기하기

1. 기계학습 구성 요소 경험사례, 모델, 평가기준 인공신경망 같은 모델을 학습시키고자 한다면..? 많은 경험사례를 통한 반복학습 입력과 기대하는 출력의 pair를 반복적으로 보여줌 모델한테 보여주는건 좋은데 모델이 학습을 잘 하고있는지 기준이 필요함 학습을 못하고있으면 잘하도록 만들어야하니까 이러한 평가 기준이 cost(loss function) 2. 가장 좋은 모델 f를 찾는 방법? 기대하는 출력과 모델이 데이터를 보고 낸 출력 사이 차이가 최소화가 되도록 하는 모델을 찾는 것 기대하는 출력과 모델이 낸 출력 사이 차이를 최소화시키도록 만드는 방향으로 학습 3. 예시로 이해하는 기계학습 시간의 흐름과 주가와의 관계를 파악 시간을 넣어주면 모델이 해당하는 기댓값 주가를 출력 과거의 결과가 다음같이 나온..