본문 바로가기
  • 기술을 이야기하지만 사람을 생각합니다.
20. Deep Learning

[PyTorch로 시작하는 딥러닝] Lab 11-1 RNN Basic

by WE DONE IT 2020. 3. 29.

edwith의 파이토치로 시작하는 딥러닝 기초 중 <11-1 RNN Basic> 수업을 듣고 정리하였습니다. 잘못된 부분이 있으면 말씀해 주세요!


RNN in PyTorch

입력하고자 하는 데이터(input_data)는 세 가지 차원을 가지는 Tensor로 정의된다. shape = ( ___, ___, ___) 세 가지 차원은 아래에서 설명할 예정입니다. 

RNN을 PyTorch에서 구동하는 방법

Example : Input 

여기에서 사용한 1-hot encoidng은 단어를 구성하는 문자들을 사전식으로 쭉 나열한 뒤, 사전의 개수만큼 vector를 만들어 놓고 각각의 문자를 index에 해당하는 그 자리에 '1'을 주고 나머지는 '0'을 넣어주는 방식이다.

"hello" 단어의 input 방식

따라서, 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이다. 

hidden state의 개념

Q. Hidden state와 output size와 어떻게 동일한 값이 될 수 있을까?
(왜 output이 hidden state를 따라가는가?)

hidden state와 output 크기가 같은 이유

구조적으로 살펴봤을 때, 출력 직전에 값이 (1) output_size와 (2) hidden_state로 분기가 된다. 따라서 hidden_state의 크기와 output의 크기가 같게 된다. 

 

Example : Sequence Length

Sequence length는 Input data의 길이를 뜻한다. PyTorch에서는 값을 자동으로 계산하기 때문에 input_size 값만 잘 입력해주면 된다.

sequence length
sequence length 값은 두 번째 자리의 파라미터로 사용된다.

Example : Batch Size

RNN은 여러 개의 데이터를 하나의 batch로 묶어서 모델에 학습시킬 수 있다. batch 크기 또한 자동으로 계산되기 때문에, input size만 잘 입력해 주면 된다.

batch size는 shape의 첫 번째 자리의 파라미터에 해당된다. 


실제 PyTorch 코드로 구현하면 아래와 같다.

output_size = (3, 5, 2)

 

댓글0