전체 글(137)
-
Pytorch로 시작하는 딥러닝 입문(09-01. 토큰화)
자연어 처리에서 코퍼스 데이터가 필요에 맞게 전처리되지 않은 상태라면 해당 데이터를 사용하고자 하는 용도에 맞게 토큰화(tokenization), 정제(cleaning), 정규화(normalization)하는 일을 하게 된다. 여기서는 그 중 토큰화에 대해 학습한다. 주어진 코퍼스(corpus)에서 토큰(token)이라고 불리는 단위로 나누는 작업을 토큰화(tokenization)이라고 한다. 토큰의 단위는 상황에 따라 다르지만 보통 의미 있는 단위로 토큰을 정의한다. ♣ 단어 토큰화(Word Tokenization)토큰의 기준을 단어(word)로 하는 경우, 단어 토큰화(word tokenization)이라고 한다. 여기서 단어는 단어 단위 외에도 단어구, 의미를 갖는 문자열로도 간주된다. ♣ 토큰..
2024.03.25 -
Pytorch로 시작하는 딥러닝 입문(08-03. 깊은 CNN으로 MNIST 분류하기)
앞서 배운 CNN에 층을 더 추가하여 MNIST를 분류해보자 ♣ 모델 이해하기모델의 아키텍처는 총 5개의 층으로 구성된다. 앞서 배운 CNN 모델과 1번 레이어와 2번 레이어는 동일하고 새로운 합성곱층과 전결합층을 추가한다. 더보기#1번 레이어(합성곱층)합성곱(in_channel=1, out_channel=32, kernel_size=3, stride=1, padding=1) + 활성화 함수 ReLU + 맥스 풀링(kernel_size=2, stride=2) #2번 레이어(합성곱층)합성곱(in_channel=32, out_channel=64, kernel_size=3, stride=1, padding=1) + 활성화 함수 ReLU + 맥스풀링(kernel_size=2, stride=2) #3번 레이어(..
2024.03.23 -
Pytorch로 시작하는 딥러닝 입문(08-02. CNN으로 MNIST 분류하기)
♣ 모델 이해하기1. 첫 번째 표기 방법합성곱(nn.Conv2d) + 활성화 함수(nn.ReLU)를 하나의 합성곱 층으로 보고, 맥스풀링(nn.MaxPool2d)은 풀링층으로 별도로 명명한다. 2. 두 번째 표기 방법합성곱(nn.Conv2d) + 활성화 함수(nn.ReLU)+ 맥스풀링(nn.MaxPoold2d)을 하나의 합성곱 층으로 본다. 첫 번째 표기 방법과 두 번째 표기 방법은 풀링도 하나의 층으로 보느냐 안 보느냐의 문제이다. 여기서는 편의를 위해 맥스풀링까지 포함해서 하나의 합성곱 층으로 판단하여 정리한다. 모델의 아키텍처는 총 3개의 층으로 구성된다. #1번 레이어: 합성곱층(Convolutional layer) 합성곱(in_channel = 1, out_channel = 32, ke..
2024.03.22 -
애드훅(ad-hoc, 백준 알고리즘 31631번)
♣ 애드훅 라틴어로 'for this particular purpose'라는 뜻으로, 특정 상황에서만 정답이 되고 일반화될 수 없는 해답을 의미한다. 정형화된 방법론이 아니라 그 문제를 풀기 위한 창의적인 아이디어를 떠올려야 하는 경우를 애드훅 문제라고 한다. 따라서 코드를 재사용하는 것이 거의 불가능하다. 최적의 선택이 아니므로 개발 기간이 촉박할 때 급하게 요구 사항을 맞추는 데 사용된다. ♣ 백준 알고리즘 31631번 ♣ 문제 이해 빌딩의 숫자가 주어졌을 때, 빌딩 위로 가지를 날리는데 가지의 방향을 가장 많이 바꿀 수 있는 경우를 구하는 문제이다. 가지는 1번 건물에서부터 오른쪽으로 날아가기 때문에 맨 오른쪽 건물이 가장 높아야 한다. 그리고 나서 왼쪽과 오른쪽에 번갈아서 큰 건물을 넣는다. 1 ..
2024.03.22 -
Pytorch로 시작하는 딥러닝 입문(08-01. 합성곱과 풀링/Convolution and Pooling)
합성곱 신경망은 이미지 처리에 탁월한 성능을 보이는 신경망이다. 합성곱 신경망은 크게 합성곱층(convolution layer)과 풀링층(pooling layer)으로 구성된다. 위의 그림은 합성곱 신경망의 예시를 보여준다. Conv는 합성곱 연산을 의미하고, 합성곱 연산의 결과가 ReLU를 지난다. 이 두 과정이 합성곱층이다. 그 후에 POOL이라는 구간을 지나는데, 이는 풀링 연산을 의미하며 풀링층이라고 한다. ♣ 합성곱 신경망의 대두앞서서 손글씨를 분류하는 문제에서 다층 퍼셉트론을 사용했다. 사람이 보기에는 두 그림 모두 알파벳 Y로 손쉽게 판단이 가능하지만, 기계가 보기에는 각 픽셀마다 가진 값이 거의 상이하므로 완전히 다른 값을 가진 입력이다. 그런데 이미지라는 것은 위와 같이 같은 대상이..
2024.03.19 -
Pytorch로 시작하는 딥러닝 입문(07-01. 순환 신경망, 파이토치의 nn.RNN())
♣ 파이토치의 nn.RNN( )파이토치에서는 nn.RNN( )을 통해서 RNN 셀을 구현한다. 실습을 통해 이해해보자. 입력의 크기와 은닉 상태의 크기를 정의한다. 은닉 상태의 크기는 RNN의 대표적인 하이퍼파라미터이다. 입력의 크기는 매 시점마다 들어가는 입력의 크기를 의미한다. 이제 입력 텐서를 정의한다. 입력 텐서는 (배치 크기 × 시점의 수 × 매 시점마다 들어가는 입력)의 크기를 가진다. 여기서는 배치 크기는 1, 10번의 시점 동안 5차원의 입력 벡터가 들어가도록 텐서를 정의한다. nn.RNN( )을 사용하여 RNN의 셀을 만든다. 인자로 입력의 크기, 은닉 상태의 크기를 정의하고 batch_first = True를 통해 입력 텐서의 첫 번째 차원이 배치 크기임을 알려준다. 여기서는 ..
2024.03.18