edwith의 파이토치로 시작하는 딥러닝 기초 중 <11-1 RNN Basic> 수업을 듣고 정리하였습니다. 잘못된 부분이 있으면 말씀해 주세요!
RNN in PyTorch
입력하고자 하는 데이터(input_data)는 세 가지 차원을 가지는 Tensor로 정의된다. shape = ( ___, ___, ___) 세 가지 차원은 아래에서 설명할 예정입니다.
Example : Input
여기에서 사용한 1-hot encoidng은 단어를 구성하는 문자들을 사전식으로 쭉 나열한 뒤, 사전의 개수만큼 vector를 만들어 놓고 각각의 문자를 index에 해당하는 그 자리에 '1'을 주고 나머지는 '0'을 넣어주는 방식이다.
따라서, input_size는 input_data Tensor의 dimension 중 하나이다.
Exampel : Hidden State
예를 들어, 감정을 추론한다고 할 때 input을 통해 추론할 수 있는 감정의 개수가 레이블의 개수가 되며, hidden_size의 개수도 된다. 즉, 추론 감정이 기쁨, 슬픔, 화남 세 가지라면 hidden_size도 3이 된다.
Hidden state의 의미를 살펴보면 숨겨진 상태라는 뜻이다.
셀 A 입장에서 output은 외부로 노출되는 값이며, sequence input 마다 값을 노출한 output을 밖으로 내놓는다. 밖으로 내놓지 않고 숨겨진 상태로 다음 sequence input에 같이 전달하는 값이 hidden state이다.
Q. Hidden state와 output size와 어떻게 동일한 값이 될 수 있을까?
(왜 output이 hidden state를 따라가는가?)
구조적으로 살펴봤을 때, 출력 직전에 값이 (1) output_size와 (2) hidden_state로 분기가 된다. 따라서 hidden_state의 크기와 output의 크기가 같게 된다.
Example : Sequence Length
Sequence length는 Input data의 길이를 뜻한다. PyTorch에서는 값을 자동으로 계산하기 때문에 input_size 값만 잘 입력해주면 된다.
Example : Batch Size
RNN은 여러 개의 데이터를 하나의 batch로 묶어서 모델에 학습시킬 수 있다. batch 크기 또한 자동으로 계산되기 때문에, input size만 잘 입력해 주면 된다.
실제 PyTorch 코드로 구현하면 아래와 같다.
'20. 인공지능과 딥러닝' 카테고리의 다른 글
GAN(Generative Adversarial Networks) 논문 리뷰 (4) | 2020.06.07 |
---|---|
[PyTorch로 시작하는 딥러닝] Lab-11-2 RNN hihello and charseq (0) | 2020.03.29 |
[PyTorch로 시작하는 딥러닝 기초] Lab 11-0 RNN intro (0) | 2020.03.29 |
[PyTorch로 시작하는 딥러닝 기초] Lab-10-3 visdom (0) | 2020.03.08 |
[PyTorch로 시작하는 딥러닝 기초] Lab-10-2 Mnist CNN (0) | 2020.03.07 |
댓글