[모두를 위한 딥러닝2] RNN #1 basics

- pytorch에서 RNN을 구현하기 위해서는
rnn = torch.nn.RNN(input_size , hidden_size) : 셀 A를 선언하는 과정
outputs, _status = rnn(input_data) : input X를 셀 A에 집어넣고 결과물 h를 반환받는 과정
- input_data : 3개의 차원을 가지는 tensor로 정의되는데, batch_size, sequence_length, input_size를 필요로 함
- input_data(batch_size, sequence_length, input_size)
output_data(batch_size, sequence_length, hidden_size)
예시
단어 'Hello'를 RNN에 입력하는 과정

- input size : 셀 A가 선언될 때 사용자가 미리 A에게 알려주어야 함
- 1-hot encoding :
단어를 구성하는 문자들을 사전식으로 나열 ->
문자의 개수(중복제외)만큼의 크기로 벡터를 만들기 ->
각각의 문자의 인덱스에 해당하는 자리를 1로 켜고 나머지는 0으로 끄기

output_data로 몇 개의 차원을 가진 벡터를 출력받을지 결정해주는 과정
- Hidden State : 셀 A에서 output으로 나가지 않고 숨겨진 상태로 다음번 input에 같이 전달되는 값

- Q. hidden size를 결정하는 것이 어떻게 output size에 영향을 줄까?
A. A에서 출력 직전에 똑같은 값이 2개의 가지로 갈라져 하나는 output/ 나머지 하나는 hidden state가 됨
=> output size = hidden state


- Sequence Length : 입력하는 데이터의 개수

- input_data로 sequence_length와 batch_size를 잘 입력하면, output_data에 별도로 사용자가 입력하지 않아도 모델이 자동으로 파악함
