Loading...
2024. 4. 11. 03:17

pretrained된 computer vision 모델에서 마지막 linear layer는 제거하고 feature만 뽑는법

예를 들어 resnet model에 대해 pretrained된 모델을 불러오고 import torchvision.models as models resnet = models.resnet152(pretrained=True) resnet.children()하면 resnet의 모듈을 불러올수 있다 마지막에 Linear() classifier layer가 있는데 얘를 제거하면 된다 modules = list(resnet.children())[:-1] # fully connected layer의 가장 마지막 layer 제거 이렇게 제거된 모듈을 nn.Sequential()로 sequential한 모델을 만들면 된다 import torch import torch.nn as nn import torchvision.mo..

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. 31. 02:03

NLP huggingface model에 input을 제대로 넣었는데 IndexError: index out of range in self가 나는 이유

데이터셋을 다음과 같이 구현하고 def preprocess(data): preprocessed_data = [] for i in range(len(data)): d = data[i] knowledge = ' '.join(d['knowledge']) query = f"질문: {d['query']}\n지식: {knowledge}" answer = f"{d['answer']}" preprocessed_data.append((i,query,answer)) return preprocessed_data T5 토크나이저, 모델 불러온 다음 tokenizer = T5Tokenizer.from_pretrained('digit82/kolang-t5-base') model = T5ForConditionalGeneration..

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개 정도로 해서 ..

reproducibility를 위한 random seed

1. 필요성 모델의 재현성 cross validation의 경우 실행할 때마다 매번 다르게 sampling되어 model의 성능이 매번 다르다 반복해서 실행했을 때 동일한 조건에서 동일하게 sampling되어야 정확하게 model 성능 측정이 가능함 머신러닝 모델도 random하게 작동하므로 작업 복원을 위해서라도 반드시 필요함 어떤 가설을 설정하고, 그것이 맞는지 실험할려고 하는데 재현이 안된다면 가설에 의한 변화 때문에 성능이 바뀐건지, 다른 원인이 있는건지 파악할 수 없음 2. seed 모델의 랜덤성 때문에 풀고자 하는 문제에 대하여 데이터가 매번 바뀌면 모델 성능 측정시 내가 만든 feature나 전처리 방식이 효과적인지 확인이 어렵다 랜덤성을 제거하기 위한 seed를 고정 feature engi..