본문 바로가기

분류 전체보기69

Lec 11-3 : RNN Long sequence 딥러닝 공부 27일차 Sequence dataset from long sentence 앞선 글에서는 문장을 커스터마이징 하는데까지 배워봤습니다. 그렇다면 위 그림과 같이 긴 문장은 어떻게 rnn으로 학습시킬 수 있을까요?? 사실 현직에서 사용하는 정도의 긴 문장은 절대 아니지만 아직 배운 수준에 비해선 긴 문장이니 그냥 그런거로 하겠습니다. x_data, y_data를 배열로 선언해줍니다. 반복문을 돌리는데, 우리는 긴 문장안에서 sequence_length 만큼씩 쪼개서 볼 겁니다. 예를들어 5개 글자중(공백포함) 시퀀스길이가 3이라면 5-3=2이므로 0부터2까지 3개의 반복문이 실행이 되는 것인데 이는 정확히 나눠서 세야할 반복 횟수와 동일합니다. 같은 원리로 for i in range(0, len(.. 2023. 9. 27.
Lec 11-2 : RNN Hihello and Charseq 딥러닝 공부 26일차 'hihello' problem 앞선 글에서는 hello라는 글자를 가지고 rnn을 돌리는 방법을 간략하게 알아봤었습니다. 이제는 그 글자가 hihello 로 바뀌었을 뿐인데요, 여기서 우리는 주목해야할 문제점이 있습니다. h 같은 경우 그 다음 문자가 i 가 올지 e 가 오는지에 관해서 rnn을 구성해야한다는 점입니다. 문자 표현하기 by one-hot vector 원-핫 인코딩 복습하기 문자를 만약에 위 그림의 왼쪽처럼 0,1,2,3,4 로 의미를 부여해준다고 한다면 컴퓨터의 입장에서는 o 가 h 보다 훨씬 중요한 문자구나 라고 인지하게 되는 오류가 발생할 수 있습니다. 그래서 원-핫 인코딩이 필요한 것입니다. 원-핫 벡터로 h, i ,e, l, o 를 표현하면 위.. 2023. 9. 26.
Lec 11-1 : RNN basics 딥러닝 공부 25일차 RNN을 Pytorch에서 구동하는 법은 두줄이면 끝납니다. 그림에서 볼 수 있듯이 rnn = torch.nn.RNN(input_size, hidden_size) outputs, _status = rnn(input_data) Input_data shape 위처럼 두줄이면 rnn을 가져다 쓸 수 있습니다. 이제 여기서 input data의 모양이 어떻게 구성이되는지, output shape도 어떻게 이루어져 있는지 알아보겠습니다. Input_size 우리가 살펴볼 글자는 hello 입니다. 여기서 글자수는 5개지만 실제로 사용되는 글자는 h, e, l, o 이렇게 4가지이므로, (-, -, 4) 괄호 안에들어가는 3가지중 맨 오른쪽에는 사용되는 글자 자체의 개수가 들어가게 됩니다. S.. 2023. 9. 25.
Lec 11-0 : RNN Intro 딥러닝 공부 24일차 RNN이 필요한 이유 우리는 기존에 배운 NN, CNN 으로 여러가지 일들을 해낼 수 있지만, Sequence Data 는 해결하지 못하는 문제점이 있습니다. 그래서 이러한 순차데이터(시계열데이터)를 잘 학습하기위한 도구로 등장한 것이 Recurrent Neural Network, RNN 입니다. Sequential data sequential data는 말그대로 시간의 관계성이 있는 데이터들을 의미하고 예를들어서 우리가 말을하는 문장, 단어들, 혹은 기상청 날씨 데이터 같은 것들을 말합니다. 추가로 RNN을 순환신경망(Recurrent) 또는 재귀신경망(Recursive) 라고 설명하면서 둘다 같은 모델이라고 설명하는 곳이 있는데, 순환신경망과 재귀신경망은 약간 다른 모델입니다. .. 2023. 9. 25.
Lec 10-4 : Resnet, Advance CNN 딥러닝 공부 23일차 CNN을 연구하면서 기존 모델들은 Layer를 깊게 쌓을수록 성능이 좋아질 것이라고 예상했지만 실제로는 20층 이상의 깊이로 갈 수록 오히려 성능이 떨어지는 현상이 존재하였습니다. 그래서 깊이가 깊어질수록 성능이 좋게 만들 수 있는 방법이 없을까해서 나온 방법이 바로 Resnet이라는 방법입니다. 사진과 같이 152층이라는 엄청나게 깊은 네트워크로 사람의 한계를 뛰어넘은 모습을 볼 수 있습니다. 하지만 이렇게 매우 깊은 네트워크에는 문제점이 존재합니다. 층이 깊어질수록 성능이 떨어지는 것을 보고 직관적으로 Gradient Vanishing/Explosion 이 발생할 수 있음을 짐작할 수 있고, 또한 Degradation 이라는 층이 깊어지면 오히려 성능이 안좋아지는 현상이 발생함을.. 2023. 9. 24.
Lec 10-3 : VGG, Advance CNN 딥러닝 공부 22일차 VGG-net Oxford VGG(Visual Geometry Group) 에서 만든 Network입니다. VGG는 Layer의 개수에 따라 VGG11 ~ VGG19 까지 만들 수 있도록 되어있습니다. torchvision.models.vgg 로 사용할 수 있습니다. 또한 3224224 입력을 기준으로 만들도록 되어 있습니다. VGG 코드 구현 모두 3*3 Conv, Stride = 1, Padding = 1 로 이루어져있어서 구조가 어려운 편은 아닙니다. import torch.nn as nn import torch.utils.model_zoo as model_zoo __all__ = [ 'VGG', 'vgg11', 'vgg11_bn', .. 2023. 9. 24.
Lec 10-2: CNN으로 MNIST 분류기 구현하기 딥러닝 공부 19일차, 21일차 오늘은 MNIST 손글씨 분류기를 CNN을 통해 구현해보는 시간을 가져보겠습니다. 먼저 필요한 도구들을 import 해줍시다. import torch import torch.nn as nn import torchvision.datasets as dsets import torchvision.transforms as transforms import torch.nn.init GPU 연산을 위한 설정을 해줍니다. device = 'cuda' if torch.cuda.is_available() else 'cpu' torch.manual_seed(777) if device == 'cuda': torch.cuda.manual_seed_all(.. 2023. 9. 23.
Deep Learning code 구현을 위한 Q&A 딥러닝 공부 18일차(+20일차) 그 동안 딥러닝 공부를 하면서 들었던 의문점들을 총 집합해서 공부하고 알아보겠습니다. 제가 들었던 의문이면 다른 사람들도 똑같이 의문을 가지지 않았을까 싶어 따로 정리해보려합니다. 도움이 되었으면 좋겠습니다~ Parameter VS Hiperparameter 파라미터는 한국어로 매개변수입니다. 파라미터는 모델 내부에서 결정되는 변수입니다. 또한 그 값은 데이터로부터 결정됩니다. 하이퍼 파라미터는 모델링할 때 사용자가 직접 세팅해주는 값을 뜻합니다. learning rate나 서포트 벡터 머신에서의 C, sigma 값, KNN에서의 K값 등등 굉장히 많습니다. 머신러닝 모델을 쓸 때 사용자가 직접 세팅해야 하는 값은 상당히 많습니다. 그 모든 게 다 하이퍼 파라미터입니다... 2023. 9. 23.
728x90