목록AI (32)
Joonas' Note
https://github.com/pytorch/pytorch/issues/16417 RuntimeError: CUDA out of memory. Tried to allocate 12.50 MiB (GPU 0; 10.92 GiB total capacity; 8.57 MiB already allocated; 9.28 CUDA Out of Memory error but CUDA memory is almost empty I am currently training a lightweight model on very large amount of textual data (about 70GiB of text). For that I am using a machine on a c... github.com 대부분 아래 메시..
Numeric Error 결과값이나 학습 도중에 log(x)를 씌우면 NaN으로 가는 경우. 즉, x가 음수가 나오는 경우가 있는 지? log1p 등으로 해결할 수도 있지만 계산 과정에서 음수가 나오지 않는지 수식을 다시 확인한다. Learning rate learning rate가 커서 gradient discent 단계에서 아예 튕겨져 나갔을수도 있다. 데이터셋에 NaN이 섞인 경우 왜인지 모르겠는데 종종 pandas에서 fillna()가 먹히지 않는 경우가 있었다. 아래 스크립트로 N/A, NaN 등의 값이 있는 지 확인한다. def get_na_df(df): na_df = df.isna().sum() na_cols = na_df[na_df > 0].index return df[df.isna().a..
이번 글에서 사용되는 데이터셋은 Kaggle의 한 Competition인 house-prices-advanced-regression-techniques이다. 개와 고양이 분류 이후로, 회귀(Regression) 모델을 연습하기 위해서 적당한 주제를 잡던 중에 먼저 ML 모델로 데이터 전처리(preprocessing)부터 연습하기로 했다. Regression 모델로 LinearRegression, Ridge, Lasso 이렇게 3개로 학습하면서 튜닝해봤는데, LightGBM이 가장 loss가 낮아서 그걸로 제출했더니 가장 순위가 좋았다. 그래도 RMSE 0.17812(상위 77%)로 매우 낮은 예측을 보였다. https://www.kaggle.com/code/joonasyoon/ml-practice-on-..
Pandas는 기본값이 64비트 타입임에 유의해야한다. ╔══════════════════════════╦════════════════╦════════════════════╦═════════════════════════╦═════════╦═════════╗ ║ Data type ║ dtype ║ CPU tensor ║ GPU tensor ║ NumPy ║ Pandas ║ ╠══════════════════════════╬════════════════╬════════════════════╬═════════════════════════╬═════════╣═════════╣ ║ Boolean ║ torch.bool ║ torch.BoolTensor ║ torch.cuda.BoolTensor ║ bool_ ║ ..
ROC(Receiver Operating Characteristic) curve는 TPR(True Positive Rate)와 FPR(False Positive Rate)의 변화값을 보는 데 이용한다. 분류가 잘 되었는 지 확인할 수 있는 성능 지표 중 하나이다. sklearn에서는 이것을 차트로 그려주는 RocCurveDisplay 모듈이 있다. 3가지 방법이 있는데, 직접 TPR과 FPR을 넘겨서 그리는 방법은 문서에서 권장하지 않고, 모델로부터 그리는 from_estimator와, 정답 레이블과 예측 레이블을 넘겨서 그리는 from_predictions를 권장하고 있다. import matplotlib.pyplot as plt from sklearn.datasets import make_classi..
이전 글 - [딥러닝 일지] 오프라인에서 파이토치 모델 불러오기 MNIST 공부한 CNN을 토대로 참가해볼만한 competition이 없을까 찾아보다가 계속 Ongoing 중인 것을 찾았다. https://www.kaggle.com/competitions/digit-recognizer 데이터가 예상과 다르게 생겨서 당황했었다. jpg나 png 이미지 파일로 있을 줄 알았는데 csv 형태였고, (28, 28) 사이즈의 픽셀을 전부 column으로 들고 있었다. VGG16 실패 이전의 글에서 했던 것 처럼, VGG16 뒤에 FC 레이어를 붙여서 학습해봤는데 18+시간이 걸렸다. 가지고 있던 gpu 할당 시간을 초과해서 학습이 그대로 끝나있었다. VGG16은 (3, 224, 224) 크기의 이미지를 입력으로 ..
이전 글 - [딥러닝 일지] Conv2d 알아보기 오류 메시지 VGG 같은 모델을 사용하기 위해 허브에서 불러올 때 아래처럼 연결되지 않는 경우가 있다. import torchvision model = torchvision.models.vgg16_bn(pretrained=True) Downloading: "https://download.pytorch.org/models/vgg16_bn-6c64b313.pth" to /root/.cache/torch/hub/checkpoints/vgg16_bn-6c64b313.pth --------------------------------------------------------------------------- gaierror Traceback (most recent..
이전 글 - [딥러닝 일지] 데이터 늘리기 (Data Augmentation) Convolution 2D 이미지를 다루는 딥러닝에서 핵심적인 요소로 쓰이고 있다. 이걸 쌓은 네트워크가 CNN. 학습 데이터로 들어가는 텐서는 아래와 같이 벡터 덩어리(?)의 모습이므로, 오른쪽의 RGB 이미지도 왼쪽과 같은 (3, 4, 4) 크기의 텐서가 된다. 하지만 같은 이미지를 조금만 회전해도 배열의 순서가 완전히 다른 모습이 되기 때문에, 학습하려는 그래프의 입장에서는 의미있는 특징(feature)들을 뽑아내기 힘들어진다. 이미지는 그 특성상, 인접한 픽셀끼리 뭉쳐서 해석하는 것이 어떤 의미를 가질 수 있다고 생각한 접근이 아닐까한다. 필터, 커널 그렇다면 덩어리 단위로 묶어주는 작업이 필요한데, 이것은 슬라이딩 윈..