본문 바로가기

전체 글40

[Vision Transformer Image Classification] 3. VisionTransformer 모듈 완성 1. Transformer Encoder 재사용기존에 내가 만들어줬던 Encoder를 재사용할 예정이다. ViT에서는 Decoder/casual-mask/cross-attention 이 필요없기 때문에 Encoder 부분만 있는 그대로 들고와 줬다.import mathimport torchimport torch.nn.functional as Fimport torch.nn as nndef scaled_dot_product_attention(Q,K,V, mask = None): #Q,K,V: (batch, heads, seq_len, d_k) 크기의 행렬 scores = torch.matmul(Q,K.transpose(-2,-1)) / math.sqrt(Q.size(-1)) if mask .. 2026. 9. 25.
[Vision Transformer Image Classification] 2. Embedding, batch input 1. Patch Embeddingtransformer에서 NLP를 수행 할 때 단어 token을 embedding 했던 것 처럼 ViT에서는 patch vector를 embeddin vector로 바꿔줘야 한다. 우리가 현재 갖고 있는 patch는 [64,48] 크기의 vector로 48은 단순히 3x4x4 pixel 값을 펼친 결과이기 때문에 transformer input으로 사용하기 위해 embedding을 해줘야 한다. 간단하게 nn.Linear를 써서 embedding 차원으로 바꿔주면 된다.d_model = 128patch_embedding = nn.Linear(48,d_model)patches = patch_embedding(patches)nn.Linear 함수는 기본적으로 맨 마지막 dim.. 2026. 9. 24.
[Vision Transformer Image Classification] 1.Image Patch 1. Vision Transformer 란?Vision Transformer(ViT)는 Transformer구조를 이미지 처리에 적용하기 위해 나온 기술이다. Transformer는 원래 Sequence 데이터를 처리하기 위해 나온 모델이지만 이미지 데이터는 문장처럼 Sequence 데이터가 아니기 떄문에 이미지를 Transformer가 처리 할 수 있는 sequence로 변환해야 한다. 2. Image PatchCoursera 강의를 들을 때 배웠던 내용이라 짧게만 설명하고 넘어가겠다. 예를 들어 이번 프로젝트에 쓸 데이터인 CIFAR-10 이미지를 보면 32x32x3 형태의 데이터로 돼 있는데 이 이미지를 nxn 짜리의 window를 통해 잘라주는 것이다. 만약 window가 4x4 라면 32/4 =.. 2026. 9. 13.
분류 모델 성능 평가 지표(Confusion_matrix, Precision, Recall, F1-Score) 1. Confusion Matrix(오차 행렬)이란?True/False는 모델이 맞게 평가 했는지를 나타내고 Positive/Negative 는 모델이 긍정/부정 으로 평가했다는 뜻이다. 앞서 imbd 데이터에서는 Positive = 1, Negative = 0 이였다. TP : 긍정 -> 긍정 으로 예측TN : 부정 -> 부정 으로 예측FP : 부정 -> 긍정 으로 예측FN : 긍정 -> 부정 으로 예측 2. 정밀도(precision)'Positive' 라고 예측한 것 중에서 맞은 비율이다. 즉 TP/(TP + FP)가 되는 것이다. 내가 Positive라고 판단한 것 들이 얼마나 믿을 만한가? 를 보는 지표이며 FP가 발생하는 걸 피해야 할 때 중요하게 봐야 할 지표이다. 위 그림과 같이 스팸 이메일.. 2026. 9. 12.
[Hugging Face] Pre-trained Model Fine-tuning (3. Train Loss vs Validation Loss) 0. Train Loss vs Validation Loss이전 포스트에서 Training Loss와 Validation Loss 를 비교해 모델이 제대로 fitting이 되었는지 overfitting이 되지는 않았는지 등을 판단 할 수 있다고 했는데 여기서 조금 더 자세히 알아보자. 1) Train Loss 와 Validation Loss 의 의미- Train Loss : 학습에 실제로 사용한 데이터에서 모델이 얼마나 틀리는지 나타낸 지표. 일반적으로 학습이 진행 되면서 점점 잘 맞추기 때문에 loss가 낮아지는 경향을 보임 - Validation Loss : 학습에는 사용하지 않는 validation 데이터에서 모델이 얼마나 틀리는지 나타낸 지표. 모델이 일반적인 패턴을 잘 학습 했다면 loss가 낮아.. 2026. 9. 6.
[Hugging Face] Pre-trained Model Fine-tuning (2. Fine-tuning) 1. DataLoader 만들기from torch.utils.data import DataLoadertrain_loader = DataLoader( train_dataset, batch_size=16, shuffle=True)val_loader = DataLoader( val_dataset, batch_size=16, shuffle=False)DataLoader는 Dataset을 batch 단위로 꺼내주는 역할을 한다. 예를 들어 지금 train_dataset 이 4000개에 batch_size가 16이기 때문에 16개 * 250 해서 총 4000개의 데이터를 넣어주는 것이다.보통 Validation에서는 순서를 섞을 필요가 없기 때문에 그냥 넣는다. 2.GPU 설정imp.. 2026. 9. 2.