목록dl (7)
Joonas' Note
이전 글 - [딥러닝 일지] Auto Encoder (with MNIST) AE와 다른 점 인코더로 매핑한 잠재 공간의 어떤 포인트들이 정규 분포의 형태로 만들어진다는 점이다. 다시 말해, 디코더로 만들어지는 비슷한 샘플 이미지들은 비슷한 잠재 공간으로부터 만들어진다는 의미이다. 잠재 공간을 살펴보면, 각 레이블별로 AE에 비해 더 뭉쳐있을 것이다. 이제 encoder는 각 차원별로 확률 분포를 구하기 위해 평균(mean)과 표준편차(std)를 학습한다. 특징들의 평균과 분산을 계산하는 것이다. z가 되는 수식에서 엡실론 \( \varepsilon \) 은 표준 정규 분포 \( {\displaystyle \mathrm {N} (0,1)} \) 를 따르는 적당한 난수이다. 코드에서 바뀌는 부분은 이렇다. ..
이전 글 - [딥러닝 일지] MNIST Competition 생성 모델 이번에는 MNIST 데이터셋으로 0~9 사이의 숫자를 주면 28x28 크기의 숫자 이미지를 만들어내는 생성 모델을 연습했다. 그 중에서도, 가장 기초적인 형태의 오토 인코더(Auto Encoder) 모델이다. 입력 이미지를 잠재 공간(Latent space)의 어떤 형태로 만드는 Encoder 부분과, 잠재 공간의 값을 다시 재구성하는 Decoder 부분으로 이루어진다. 여기서 잠재 공간의 차원은 2개, 10개 등 상관없고 당연하겠지만 고차원일수록 많은 표현들을 내포할 수 있으므로 좋다. 레이어를 분리해서 학습을 진행하는 경우도 있고 하나로 합쳐서 학습해도 되는데, 중간값을 확인할 수 있도록 분리해서 진행했다. encoded = En..
이번 글에서 사용되는 데이터셋은 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-..
이전 글 - [딥러닝 일지] 오프라인에서 파이토치 모델 불러오기 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) 크기의 이미지를 입력으로 ..
이전 글 - [딥러닝 일지] 데이터 늘리기 (Data Augmentation) Convolution 2D 이미지를 다루는 딥러닝에서 핵심적인 요소로 쓰이고 있다. 이걸 쌓은 네트워크가 CNN. 학습 데이터로 들어가는 텐서는 아래와 같이 벡터 덩어리(?)의 모습이므로, 오른쪽의 RGB 이미지도 왼쪽과 같은 (3, 4, 4) 크기의 텐서가 된다. 하지만 같은 이미지를 조금만 회전해도 배열의 순서가 완전히 다른 모습이 되기 때문에, 학습하려는 그래프의 입장에서는 의미있는 특징(feature)들을 뽑아내기 힘들어진다. 이미지는 그 특성상, 인접한 픽셀끼리 뭉쳐서 해석하는 것이 어떤 의미를 가질 수 있다고 생각한 접근이 아닐까한다. 필터, 커널 그렇다면 덩어리 단위로 묶어주는 작업이 필요한데, 이것은 슬라이딩 윈..
이전 글 - [딥러닝 일지] 이미지 가지고 놀기 (변환하기) Data Augmentation 용어로는 Data Augmentation. 데이터 증강, 데이터 첨가라고도 부르는 것 같은데, 데이터를 뻥튀기하는 것이다. 이미지에서는 어렵지 않게 데이터를 늘릴 수 있다. 이전 글에서 알아본 방법으로, PIL 이미지와 torchvision.transform의 내장 함수들로 의미있는 부분들만 적당히 유지해주면서, 이미지를 회전하거나 작게 줄이거나 일부를 가리거나 색조를 변경시키는 등의 방법으로 여러 개의 복제된 이미지를 만들 수 있다. 특히, 이미지의 경우에는 방향을 뒤집기(flip)만 해도 Tensor 내의 값들이 전부 바뀌기 때문에, 같은 데이터로 과적합도 막을 수 있다. 가위바위보 이번에는 가위바위보 데이터..
이전 글 - [딥러닝 일지] 다른 모델도 써보기 (Transfer Learning) 오늘은 다음 주제를 다루는 과정에서, 이미지를 여러 방법으로 조작하는 것에 대해서 알아보았다. PIL 먼저, 파이썬에서는 이미지 라이브러리로 PIL(Python Imaging Library) 패키지가 매우 많이 쓰이는 것 같다. 많이 쓰이는 만큼, NumPy와 Tensor와도 호환되는 만들어주는 함수들이 있어서 자주 쓰는데 헷갈린다. 그래서 아래처럼 정리했다. from torchvision.transforms.functional import to_pil_image def pil_to_tensor(pil_image): # PIL: [width, height] # -> NumPy: [width, height, channel]..