모두를 위한 딥러닝 2 :: RNN 11 -1 Basics
6436 단어 RNN모두를 위한 딥러닝2RNN
RNN in PyTorch
PyTorch에서 RNN은 크게 두줄을 통해 한셀을 정의해줄 수 있음.
- 첫번째 줄 =
torch.nn.RNN()
을 이용해서 inputsize와 hiddensize을 선언해줌. cell을 정의 해주는 문장이라고 생각하면됨. - 두번째 줄 = A라는 function에 input값과 이전 state를 넣어주고, 출력하는 문장으로 생각하게 됨. 이 때 input_data는 3개의 차원을 가진 tensor로 정의됨.
- 이외의 코드 : data size를 변환해주는 과정이라고 생각하면됨
Simple Example :: input
- 1-hot encoding: 1-hot encoding은 사전식으로 단어만큼 벡터를 나열하고 해당되는 문자의 index의 1을 켜고 0으로 끄는 방식.
Simple Example :: hidden state
- 어떤 벡터의 사이즈로 출력을 원하는 가에 따라서 사이즈를 구해줌
- hidenstate는 output과 다르게 숨겨진 상태로 다음것의 sequence input에 전달된다.
- 분기되는 방식으로 전달되기에 output과 hiddenstate는 같은 사이즈로 출력되게 됨
Simple Example :: Sequence Length
- 모델이 자동으로 Sequence Length를 알아서 파악함
- hello라면 단어의 길이를 파악해 5를 출력
Simple Example :: Batch Size
- 모델이 자동으로 Batch size를 알아서 파악함
소스코드
import torch
import numpy as np
# Random seed to make results deterministic and reproducible
torch.manual_seed(0)
# declare dimension
input_size = 4
hidden_size = 2
# singleton example
# shape : (1, 1, 4)
# input_data_np = np.array([[[1, 0, 0, 0]]])
# sequential example
# shape : (3, 5, 4)
h = [1, 0, 0, 0]
e = [0, 1, 0, 0]
l = [0, 0, 1, 0]
o = [0, 0, 0, 1]
input_data_np = np.array([[h, e, l, l, o], [e, o, l, l, l], [l, l, e, e, l]], dtype=np.float32)
# transform as torch tensor
input_data = torch.Tensor(input_data_np)
# declare RNN
rnn = torch.nn.RNN(input_size, hidden_size)
# check output
outputs, _status = rnn(input_data)
print(outputs)
print(outputs.size())
Author And Source
이 문제에 관하여(모두를 위한 딥러닝 2 :: RNN 11 -1 Basics), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@uonmf97/모두를-위한-딥러닝-2-RNN-11-1-Basics
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- 어떤 벡터의 사이즈로 출력을 원하는 가에 따라서 사이즈를 구해줌
- hidenstate는 output과 다르게 숨겨진 상태로 다음것의 sequence input에 전달된다.
- 분기되는 방식으로 전달되기에 output과 hiddenstate는 같은 사이즈로 출력되게 됨
Simple Example :: Sequence Length
- 모델이 자동으로 Sequence Length를 알아서 파악함
- hello라면 단어의 길이를 파악해 5를 출력
Simple Example :: Batch Size
- 모델이 자동으로 Batch size를 알아서 파악함
소스코드
import torch
import numpy as np
# Random seed to make results deterministic and reproducible
torch.manual_seed(0)
# declare dimension
input_size = 4
hidden_size = 2
# singleton example
# shape : (1, 1, 4)
# input_data_np = np.array([[[1, 0, 0, 0]]])
# sequential example
# shape : (3, 5, 4)
h = [1, 0, 0, 0]
e = [0, 1, 0, 0]
l = [0, 0, 1, 0]
o = [0, 0, 0, 1]
input_data_np = np.array([[h, e, l, l, o], [e, o, l, l, l], [l, l, e, e, l]], dtype=np.float32)
# transform as torch tensor
input_data = torch.Tensor(input_data_np)
# declare RNN
rnn = torch.nn.RNN(input_size, hidden_size)
# check output
outputs, _status = rnn(input_data)
print(outputs)
print(outputs.size())
Author And Source
이 문제에 관하여(모두를 위한 딥러닝 2 :: RNN 11 -1 Basics), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@uonmf97/모두를-위한-딥러닝-2-RNN-11-1-Basics
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- 모델이 자동으로 Batch size를 알아서 파악함
소스코드
import torch
import numpy as np
# Random seed to make results deterministic and reproducible
torch.manual_seed(0)
# declare dimension
input_size = 4
hidden_size = 2
# singleton example
# shape : (1, 1, 4)
# input_data_np = np.array([[[1, 0, 0, 0]]])
# sequential example
# shape : (3, 5, 4)
h = [1, 0, 0, 0]
e = [0, 1, 0, 0]
l = [0, 0, 1, 0]
o = [0, 0, 0, 1]
input_data_np = np.array([[h, e, l, l, o], [e, o, l, l, l], [l, l, e, e, l]], dtype=np.float32)
# transform as torch tensor
input_data = torch.Tensor(input_data_np)
# declare RNN
rnn = torch.nn.RNN(input_size, hidden_size)
# check output
outputs, _status = rnn(input_data)
print(outputs)
print(outputs.size())
Author And Source
이 문제에 관하여(모두를 위한 딥러닝 2 :: RNN 11 -1 Basics), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@uonmf97/모두를-위한-딥러닝-2-RNN-11-1-Basics
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import torch
import numpy as np
# Random seed to make results deterministic and reproducible
torch.manual_seed(0)
# declare dimension
input_size = 4
hidden_size = 2
# singleton example
# shape : (1, 1, 4)
# input_data_np = np.array([[[1, 0, 0, 0]]])
# sequential example
# shape : (3, 5, 4)
h = [1, 0, 0, 0]
e = [0, 1, 0, 0]
l = [0, 0, 1, 0]
o = [0, 0, 0, 1]
input_data_np = np.array([[h, e, l, l, o], [e, o, l, l, l], [l, l, e, e, l]], dtype=np.float32)
# transform as torch tensor
input_data = torch.Tensor(input_data_np)
# declare RNN
rnn = torch.nn.RNN(input_size, hidden_size)
# check output
outputs, _status = rnn(input_data)
print(outputs)
print(outputs.size())
Author And Source
이 문제에 관하여(모두를 위한 딥러닝 2 :: RNN 11 -1 Basics), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@uonmf97/모두를-위한-딥러닝-2-RNN-11-1-Basics저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)