목록전체 글 (315)
rueki

이번에는 Recurent Neural Network , RNN을 구현해보는 시간이다. 보통 시계열 데이터 및 텍스트 데이터에서 많이 사용하는 신경망 구조이다. 이번 시간에는 데이터를 시계열 특성을 가지게 직접 sin함수를 구현해서 사용하였다. import torch from torch import nn import numpy as np import matplotlib.pyplot as plt %matplotlib inline plt.figure(figsize=(8,5)) seq_length = 20 time_steps = np.linspace(0, np.pi, seq_length+1)#start, stop, num data = np.sin(time_steps) data.resize((seq_length ..
삽입 정렬은 선택한 요소를 더 앞쪽의 위치에 삽입을 하는 작업을 반복하는 정렬 알고리즘이다. 선택정렬은 제일 작은 값을 선택하는 점에 있어서 차이점이 있다. 6 4 1 7 3 9 4 6 1 7 3 9 삽입 정렬을 2번째 요소부터 진행을 한다. 오름차순 정렬에 있어, 4는 6보다 앞에 있어야 하기에, 4를 앞쪽에 삽입하고, 6을 오른쪽으로 밀면 2번째 배열의 형태처럼 이루어진다. 모든작업을 수행하는 데 있어서 n-1회 반복하면 정렬을 마치게된다. for(i=1;i0의 조건을 걸어주고 a[j-1]이 tmp보다 클때까지의 조건도 같이 걸어주어야 한다. a[j-1]이 tmp보다 클 때라는 것의 의미로는, 위의 배열을 예로 들어보면 처음 반복문에서 a[j-1]은 4가 된다. 그리고 tmp는 a[i] 이기에 4가 ..
선택 정렬은 가장 작은 요소부터 선택해서 알맞은 위치로 옮겨서 순서대로 정렬하는 알고리즘이다. 6 4 8 3 1 9 7 여기서 제일 작은 원소 값은 1이며. 1을 선택해서 맨 앞에 위치한 값과 바꾼다. 1 4 8 3 6 9 7 이제 1 다음으로 작은 원소 3을 선택해서 1 다음에 위치한 값의 원소 값과 교환을 한다. 1 3 4 8 6 9 7 앞의 세 칸은 정렬을 완료했고 , 뒤의 4개 값에 대해서 계속 정렬을 해주면 되는 것이다. 위의 선택정렬 과정을 정리하면 아래와 같다. 1) 정렬하지 않은 부분에서 가장 작은 키 값의 (a[min]) 을 선택 2) a[min] 과 아직 정렬하지 않은 부분의 첫 번째 요소를 교환 이제 이를 코드로 구현해보자. void selection(int a[],int n) { i..
이전 시간에서 서로 다른 문장이 있을 때 문장의 길이를 맞춰줘야 한다는 것을 언급했었다. 이번 글에서는 문장의 길이를 맞추는 Padding에 대해서 알아보도록 하자. 1 2 3 4 5 6 7 I Love My Dog I Love My Cat You Love My dog! Do you think my dog is amazing? 위의 표에 4개의 문장을 예시로 들겠다. 1번, 2번, 3번 문장의 길이는 4로 같지만 마지막 문장의 길이는 7이다. 위의 표에서 1 ~ 3번 문장의 5,6,7 번 칸은 어떻게 처리해야 될까? 이론적 개념으로는 0으로 채우면된다. 인코딩을 하고, 저 뒤의 빈칸을 0으로 채우면 어떻게 될까? 그렇게 되면, 4개의 문장 길이는 일단 통일이 될 것이다. 이 과정을 코드로 살펴보자. fr..
이전 글에서는 단어와 문장을 토큰화 하는 방법을 알아보았고, 하나의 corpus가 생성되는 것을 볼 수 있었다. 이 다음 작업으로 필요한 것은 토큰 기반으로 문장을 Value list로 만드는 것이다. 이미지 데이터에서는 신경망에 입력할 때 이미지 크기로 정의가 된다. 크기가 다를 때는 reshape 해서 크기를 조정하지만, 텍스트에서는 일단 문장들의 길이를 하나의 길이로 통일 시켜야 한다. 아래의 두 문장 예시가 있다. 1) 나는 엄마를 좋아해. 2) 나는 엄마보다 아빠를 좋아해. 단어 한 개를 문장 길이 1이라고 가정했을 때 1번은 3, 2번은 4이다. 여기서 길이를 3으로 통일하게 되면 2번 문장에서 좋아해는 없어지게 되며, 1번과 2번 문장의 길이는 같아진다. 이제 위에서 설명한 것들을 코드로 옮..
우리는 각 문자에 대해 문자 인코딩을 취할 수가 있다. 이는 컴퓨터가 우리의 언어를 이해하는 데 있어서 가장 기본적인 개념이 될 것이다. 컴퓨터의 언어는 알다시피, 숫자로 이루어져 있기 때문이다. 오늘은 그래서 언어 및 문장을 단순하게 숫자 인코딩하는 것을 알아보도록 하자. 아래와 같이 두 문장이 있다. I love my dog. I love my cat. 위의 두 문장을 인코딩 해보도록 하겠다. I love my dog 1 2 3 4 I love my cat 1 2 3 5 하나의 단어 사전이 위의 문장에 사용된 단어로만 구성되있고 이를 단어와 인코딩 한 번호와 매칭을 했다. 맨 앞에 등장하는 I를 1이라고 가정했을 때 위와 같이 인코딩 되는 것을 볼 수가 있다. 이제 위의 두 문장을 예시로 Tensor..

이번에는 Convolution Neural Network를 이용해서 MNIST Classification을 진행해보자. 1. 라이브러리 호출 import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import DataLoader from torchvision import datasets, transforms from torchvision.utils import make_grid import numpy as np import pandas as pd from sklearn.metrics import confusion_matrix import warnings import matplotlib.pyplot as..

이번에는 ANN을 이용해서 MNIST 이미지를 분류해보는 모델을 만들어보자. 파이토치에는 비젼분야를 위한 torchvision이 있어서 매우 용이하다. import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import DataLoader from torchvision import datasets, transforms import numpy as np import pandas as np from sklearn.metrics import confusion_matrix import matplotlib.pyplot as plt %matplotlib inline 앞서 작성한 글에서도 언급했듯이, 어떤 데이터가..