Loading...
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..

2024. 3. 28. 02:26

tqdm(enumerate(dataloader))와 enumerate(tqdm(dataloader))

tqdm은 for문에서 iterable을 순회할때 어느정도 남아있는지 알려주는 대표적인 라이브러리 기본적으로 tqdm(iterable) 형태로 다음과 같이 사용 필요에 따라 dataloader를 순회할때 어느정도 남아있는지 궁금하다면... dataloader는 indexing이 불가능해서 range(len(dataloader)): 형태로는 사용하기 어렵다 그래서 enumerate(dataloader)로 사용하는데 여기서 tqdm을 어떻게 써야하나 tqdm(enumerate(train_dataloader)) 형태로 쓰면... 이렇게 어느 정도 남아있는지 알수가 없음 반대로 enumerate(tqdm(train_dataloader)) 형태로 사용하면 어느정도 남아있는지 보여줌

2024. 1. 18. 00:48

(매우 중요)대용량 데이터로 colab 딥러닝 학습할 때 첫번째 epoch이 매우 느리다면(colab 대용량 데이터, dataloader 병목현상)

colab에서 7만개 정도의 이미지 데이터를 학습하고 6만개 정도 이미지 데이터를 test할려고 하는데 평소에 한 것처럼 구글 드라이브에 데이터를 넣어두고 학습 시도 하지만 예전에 경험한 것처럼 한 폴더에 너무 많은 데이터를 넣어두면 파이썬이 구글 드라이브 폴더에 아예 접근을 못함 https://deepdata.tistory.com/1084 구글드라이브로 대용량 데이터를 다룰 때 필요한 테크닉(압축해제, 자동압축, 파일 크기 확인방 구글 드라이브의 한 폴더 내에 너무 많은 데이터가 있을 경우, colab에서 구글 드라이브로 연동할때, 파이썬이 구글 드라이브의 폴더 내의 데이터에 제대로 접근하지 못한다 그래서 한 폴더당 1000 deepdata.tistory.com 그래서 한 폴더에 500개 정도로 해서 ..

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. 27. 01:47

pytorch dataset과 dataloader 기본개념 재활

1. dataset class 1-1) torch.utils.data에 존재하는 라이브러리? 주어진 Vanilla data를 “모델이 좋아하는 dataset”으로 변환시켜줌 원하는 augmentation이나 preprocessing 방식도 추가 가능 미리 만든 MNIST같은 데이터셋 말고도 어떠한 데이터에 대해서도 새로 만든 dataset class가 필요함 1-2) 기본 구조 Mydataset이라는 class는 torch.utils.data의 Dataset의 기능들을 전부 가졌으면 해서 Dataset을 상속받음 다음 3가지는 dataset이라는 class가 가져야할 기본 기능이다. 1) __init__는 Mydataset이 처음 선언되면 최초 1번 호출되는 함수 보통 Vanilla data의 위치나 경..

2023. 1. 8. 02:31

pytorch 재활훈련 -fine tuning 구현해보기-

1. fine tuning 출력층 등을 변경한 모델을 학습된 모델을 기반으로 구축한 후, 직접 준비한 데이터로 신경망 모델의 결합 가중치를 학습시키는 방법 결합 가중치의 초기값은 학습된 모델의 parameter를 사용하는 것이 보통이다. finetuning은 transfer learning과는 다르게 출력층, 출력층에 가까운 부분 뿐만 아니라, 모든 층의 parameter를 재학습시킨다는 것이 특징이다. 일반적으로 입력층에 가까운 부분의 parameter는 learning rate를 작게 설정하고, (경우에 따라서는 바꾸지 않고) 출력층에 가까운 부분의 parameter는 learning rate를 크게 설정한다 transfer learning처럼 학습된 모델을 기반으로 하는 fine tuning은 직접..