딥러닝 모델: 파이토치(71)
-
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 -
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 -
Pytorch로 시작하는 딥러닝 입문(07-01. 순환 신경망, Recurrent Neural Network, RNN)
RNN은 시퀀스(sequence) 모델로, 입력과 출력을 시퀀스 단위로 처리하는 모델이다. 번역기를 생각해보면 입력은 번역하고자 하는 문장, 즉 단어 시퀀스이다. 출력에 해당하는 번역된 문장 또한 단어 시퀀스이다. 이러한 시퀀스들을 처리하기 위해 고안된 모델들을 시퀀스 모델이라고 한다. 그 중에서도 RNN은 딥러닝에서 가장 기본적인 시퀀스 모델이다. ♣ 순환신경망(RNN)앞서 배운 신경망들은 모두 은닉층에서 활성화함수를 지난 값이 출력층 방향으로만 향했다. 이와 같은 신경망들을 Feed Forward Neural Network라고 한다. RNN은 이와 달리 은닉층의 노드에서 활성화함수를 통해 나온 결과값을 출력층 방향으로도 보내면서 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖는다. 그..
2024.03.17