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. 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)) 형태로 사용하면 어느정도 남아있는지 보여줌

2023. 11. 7. 12:21

pytorch의 tensor를 plt.imshow()했더니 TypeError: Invalid shape for image data

https://velog.io/@olxtar/Torchvision-PIL-torch.Tensor-PIL-Image [Torchvision / PIL] torch.Tensor PIL Image PIL/Numpy Array/Torch Tensor 이미지끼리 변환하기 / torchvision.transforms.ToTensor() / torchvision.transforms.ToPILImage velog.io PIL이나 opencv로 이미지를 열때는 (height, width, channel) 순으로 shape를 가지게 된다 img = Image.open('/content/karina.jpeg') img2 = cv2.imread('/content/karina.jpeg') print(np.array(img).s..

2023. 5. 8. 03:43

pytorch - flatten과 averaging pooling, training 방법 기본기, layer 구성법

1. flatten vs. average pooling flatten은 feature map을 벡터로 적절한 순서대로 쌓고 import torch t = torch.tensor([[[1,2], [3,4]], [[5, 6], [7,8]]]) print(torch.flatten(t)) tensor([1, 2, 3, 4, 5, 6, 7, 8]) print(torch.flatten(t, start_dim = 1)) tensor([[1, 2, 3, 4], [5, 6, 7, 8]]) feature map이 [1,2,3,4]랑 [5,6,7,8]인데 이 둘을 2가지 방식으로 flatten시켰다? 이건 그림 안그려봐도 결과 코드가 이해가 될듯.. [1,2,3,4]랑 [5,6,7,8]을 적절하게 쌓았네 ----------..

2023. 5. 1. 03:25

pytorch - 모델의 parameter 제대로 이해하기 재활치료

1. model이 가지는 parameter 확인하기 model에 정의된 modules가, 가지고 있는 forward 계산에 쓰일 parameter tensor가 저장되어 있음 .state_dict(), .parameters() 함수를 이용하여 저장된 parameter를 볼 수 있음 .state_dict()는 무엇이 무엇의 parameter인지 확인 가능 .parameters()는 그냥 parameter를 출력해서 뭐가 뭔지 확인은 어렵다 parameter는 weight와 bias로 이루어져있다는 것을 알 수 있다 2. parameter tensor parameter는 tensor 기반의 class 그냥 tensor가 있고, grad를 가질 수 있는 parameter tensor라는 것이 있는거임.. 이거..