[NLP/자연어처리] 순환신경망 (Recurrent Neural Network, RNN)
·
AI Study/NLP
해당 포스팅은 김기현의 자연어처리 딥러닝 캠프의 내용과 파이토치로 시작하는 딥러닝 입문 의 내용을 정리한 것입니다. 우리는 시공간의 차원에 살고 있다. 그렇기 때문에 시공간에 정의된 수많은 문제를 해결하는 과정에서 시간의 개념을 넣어야하는 문제들도 많이 발생하고 있다. 텍스트 뿐 아니라 주식시장의 주가 예측이나 일기예보 등 많은 시간 관련 정보에 대한 문제들이 나오고 있다. 그 중 하나인 텍스트 분야의 경우, 단어들이 모여 문장이 되고, 문장이 모여 문서가 된다. 문장의 단어들은 앞뒤 위치에 따라 서로 영향을 주고받기 때문에 문서 내 문장들도 순서없이 입력을 넣으면 출력이 나오는 함수의 형태가 아니라 순차적으로 입력하면 그에 따라 hidden layer와 출력 결과가 순차적으로 반환되는 함수가 필요하다...
[Python]Pytorch - RuntimeError:Error(s) in loading state_dict ... : Missing key(s) in state_dict: ... Unexpected key(s) in state_dict:... GPU 병렬 사용 문제
·
Programming/Python
모델을 학습시킨 후 저장하고, 다시 불러오는 중에 아래와 같은 문제가 발생했다. torch.save(model.state_dict, '~~.pt')와 같은 방식으로 저장했고, model.load_state_dict(torch.load('~~.pt'))으로 불러왔을 뿐인데 에러는 다음과 같았다. 자세히 보면, model의 state_dict의 키가 맞지 않다는 것을 알 수 있다. 저장한 모델은 'module.' 키가 앞에 붙어있는 반면, 불러올 모델은 키가 붙지 않아 매핑이 안되는 문제였다. 이러한 문제가 생긴 이유는, 다중 GPU를 사용할 때 발생하는 것으로 파악됐다. 다중 GPU를 사용하면서 torch.nn.DataParallel을 사용하면 모델의 state_dict는 model.module의 형태로 ..
[Python] pytorch 모델 저장하기 - state_dict()
·
Programming/Python
평소에 파이토치에서 모델을 저장할 때 torch.save(모델명, 모델 경로)만 사용해서 pickle 파일로 저장을 했었다. 이번에 딥러닝을 배우면서 state_dict 함수란것을 배웠고, 그것이 뭔지 좀 더 자세히 기록하기 위해 이와 같은 포스팅을 하게 되었다. 모델을 저장하는데에는 두가지 방법이 있는 듯 하다. torch.save(model 명, 저장경로) 사실 torch.save()는 모델 뿐 아니라 모든 객체를 pickle 파일로 저장할 수 있는 함수이다. 확장자 명 또한 사용자가 지정 가능하다. 저장된 모델을 불러오는 데에는 torch.load(저장경로)를 사용하면 된다. torch.save( [model명].state_dict(), 저장경로) 모델의 매개변수들을 저장하는 방법 모델을 불러올 때..
[파이토치로 시작하는 딥러닝 기초]10.3 ImageFolder / 모델 저장 / 모델 불러오기
·
AI Study/DL_Basic
ImageFolder 나만의 데이터 셋 준비하기 ImageFolder란? 로컬에 저장된 이미지 데이터를 불러올 때 사용하는 pytorch 라이브러리 데이터를 준비할 때에는 명확하게 구분되는 사진을 사용해야 한다. 위와 같이 구분하는 label의 class 개수에 따라 folder를 생성하고 그 안에 해당 라벨에 맞는 이미지를 삽입한다. 데이터 불러오기 실습 import torchvision from torchvision import transforms from torch.utils.data import DataLoader from matplotlib.pyplot import imshow %matplotlib inline train_data = torchvision.datasets.ImageFolder(r..
[파이토치로 시작하는 딥러닝 기초]10.2_visdom
·
AI Study/DL_Basic
visdom이란? 데이터 시각화를 window창으로 보여주는 package visdom 설치 !pip install visdom !python -m visdom.server 위 코드를 실행하면 http://localhost:8097/ 에 visdom 화면이 생성된다. 실습 import torch import torch.nn as nn import torchvision import torchvision.datasets as dsets import visdom import visdom vis = visdom.Visdom() Text vis.text("Hello. world", env = "main") ## env = main이라는 환경에 창을 띄움 image a = torch.randn(3,200,200) ..
[파이토치로 시작하는 딥러닝 기초]10.1_Convolutional Neural Network
·
AI Study/DL_Basic
10. Convolution Neural Network 10.1 Convolution Convolution? Neuron과 Convolution Pooling Convolution이란? 이미지위에서 stride값 만큼 filter(kernel)을 이동시키면서 겹쳐지는 부분의 각 원소의 값을 곱해서 모두 더한 값을 출력으로 하는 연산 Stride and Padding stride : filter를 한번에 얼마나 이동할 것인가 padding : zero-padding (input 이미지의 상하좌우에 0의 띠가 둘러진다) Python nn.Conv2d 입력의 형태 input type: torch.Tensor 타입 input shape : (N * C * H * W) => (batch_size, channel,..
[파이토치로 시작하는 딥러닝 기초]04.02_Loading Data
·
AI Study/DL_Basic
Loading Data Minibatch Gradient Descent 이론 Pytorch Dataset and Data Loader 사용법 Data in the Real World 복잡한 머신러닝 모델을 학습하려면 엄청난 양의 데이터가 필요하다 대부분 데이터셋은 적어도 수십만개의 데이터를 제공한다. 엄청난 양의 데이터를 한번에 학습시킬 수 없다. 이유는? 너무 느리고 하드웨어적으로 불가능하기 때문 그렇다면 일부분의 데이터로만 학습하면 어떨까? Minibatch Gradient Descent 전체 데이터를 작은 Minibatch라는 작은 양으로 균일하게 나누어서 minibatch 하나씩 학습하는 방법 그러면 컴퓨터가 dataset의 모든 데이터의 cost를 다 계산한 후 gradient descent를 ..
[파이토치로 시작하는 딥러닝 기초]04.01_Multivariable_Linear_regression
·
AI Study/DL_Basic
4. Multivariable Linear regression(다항회귀분석) Simple Linear REgression 복습 Multivariate Linear Regression 이론 Naive Data Representation Matrix Data Representation Multivariate Linear Regression nn.Module 소개 F.mse_loss 소개 Simple Linear Regrssion? 하나의 정보로부터 하나의 결론을 짓는 모델 ${H(x) = Wx + b}$ 그러나 우리가 더 다양한 정보를 가지고 다양한 예측을 하기위해서는 단항선형회귀분석으로는 어렵다! Multivariate Linear Regression 복수의 정보가 존재할 떄 하나의 추측값을 계산하는 것 ..