일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 논문 작성
- Video Understanding
- mqtt
- DeepNet
- 논문 작성 요령
- 가상환경
- 주식
- 특정 layer 동결
- 모델 freeze
- layer 추출
- 모델 구조 변경
- MLLM
- Multimodal Large Language Model
- KOSMOS-2
- cnn
- 파라미터 수 확인
- 논문리뷰
- mPLUG-2
- 파라미터 수
- 주식 용어정리
- 특정 layer 추출
- def train
- def validation
- 3C4P
- Instruction dataset
- 강화학습
- 가중치 없이 모델 로드
- Foundation Transformers
- pretrained model layer
- 모델 동결
- Today
- Total
목록인공지능/딥러닝 스크래치 코드 (7)
시작은 미약하였으나 , 그 끝은 창대하리라
❏ Evaluation code ✓ train, validation 을 통한 early stopping을 수행하였으면 나온 모델을 통해 실제 예측을 수행해야하는 마지막 단계에 도달한다. 이를 위해 아래와 같이 코드를 적용하면 된다. ### Evaluation code ### ### ### # 예측값 저장하는 빈 리스트 all_predictions = [] # 모델을 평가모드로 설정. model.eval() for inputs in test_dataloader: with torch.no_grad(): inputs=inputs[0].float() x = inputs.to(device) outputs = model(x) max_values, max_indices = torch.max(outputs, 1) # ..
※ (23.12.17기준) -> 코드 동작 100퍼센트 확인 못해봄. ✓ pytorch 에서는 Train 과 evaluation 과정을 코드를 통해 수행한다. ✓ 이를 위해 스크래치 코드를 작성해보았다. (회귀 문제임) ✓ 분류는 train에서 loss, accuracy 처리법이 상이함. ❏ 분류 문제 Train, Validation 함수 → 주의사항 : 회귀문제는 정확도를 뽑지않고 Loss 값만 출력을 실행하고, 모델을 평가할때도 정확도 지표보단 error(오차)값을 평가 지표로 사용한다. (이유: 회귀문제는 경향성(추세)이 중요하기 때문임, 정확도를 평가지표로 사용한다면, 말도 안되는 처참한 결과를 볼 수 있다.) # 학습 함수 training_loss_hist = [] # tuple() 로 해도됨 ..
✓ pytorch 에서는 Train 과 Validation 과정을 코드를 통해 수행한다. ✓ 이를 위해 스크래치 코드를 작성해보았다. (분류 문제임) ✓ 회귀는 train에서 loss, accuracy 처리법이 상이함. ❏ 분류 문제 Train, Evaluation 함수 → 주의사항. 분류문제에서 cross entropy를 계산을 위해서는 y값이 LongTensor 여야 함. (Float으로 했다가 고생했던 기억이.. 까먹지 말자) → 유용한 팁. 만약 학습이 잘되는지 확인을 하고싶다면 tqdm을 사용하면 최소 2번이상은 되어야 학습이 잘되는지 loss값 감소를 통해 확인 할 수 있다. (물론 wandb 사용 안할때) 초반에 학습이 잘되는지 확인하고 싶다면 아래코드에서 tqdm을 빼버리고 주석처리된 부분..
✓ Tensorflow 에는 Train Test split 이라는 API가 존재하지만 Pytorch에서는 존재하지 않는다. ✓ 대표적인 데이터셋은 처음부터 Train, Validation, Test 를 주어서 데이터를 분리할 필요가 없다, 하지만 우리가 직접 데이터를 수집해서 학습을 한다면 Train, Validation, Test 을 나눠야한다. ✓ 이를 위해 이번 글에서는 Pytorch 를 사용하여 Train Validaion Test로 나누는 방법을 소개한다. ➢ 주의 사항 : 실험을 동일하게 재현하고 싶으면 random seed 값을 고정하고 돌려야함. ❏ Train, Validation, Test 로 나누기 from torch.utils.data import DataLoader, random_s..
✓ ablation study를 진행하다보면 다른 seed값이 모두 동일하게 고정적으로 설정이 되있어야 한다. ✓ 이를 방지하기 위해 우리는 seed 값 고정을 하여 수행한다. ❏ 실험 재현을 위한 seed 값 고정 코드 # 실험 재현을 위한 seed 고정 def seed_everything(seed: int): import random, os import numpy as np import torch import tensorflow as tf random.seed(seed) os.environ['PYTHONHASHSEED'] = str(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.backends...
➢ Loss, Accuracy 에 따라 코드가 일부 상이함으로 주의. ✓ Pytorch 는 Tensorflow 처럼 Early stopping API 를 제공하지 않는다. 결국 early stopping을 위해 Pytorch 에서는 직접 구현을 해야 함. ✓ train.py (학습코드) 에 직접 추가할수도 있지만, 필자는 가독성을 위해서 class로 만들어서 train.py에 호출해서 사용한다. ✓ 이해를 위한 선행 지식 (예시 참고) : 'def __init__ ' 기능 : class 인스턴스를 생성 할 때, 관련된 데이터를 초기화(initialization) 하는 함수 'def __call__ ' 기능 : 해당 인스턴스를 함수처럼 호출 가능. # 이해를 위한 예시 코드 # 클래스 생성 class Ex..
➢ Pytorch 에서 dataset을 쉽게 다룰 수 있도록 모듈을 제공하고 있다. 아래와 같이 두가지 Step으로 구성 된다. ❏ (Step1) CustomDataset 뼈대 - 데이터셋 상속 from torch.utils.data import Dataset # 데이터셋 상속 class CustomDataset_name(Dataset): #데이터 전처리 과정 작성. def __init__(self): pass # 데이터의 길이 (총 샘플수) 작성. def __len__(self): pass # 전처리 된 데이터셋을 인덱스(idx)에 맞게, Pytorch Tensor 형태로 반환 함. def __getitem__(self,idx): pass ❏ (Step2) DataLoader 뼈대 중요 파라미터 설명:..