텐서플로(simpleRNN)로 순환신경망 만들기 https://data-science.tistory.com/106 순환 신경망(RNN) 클래스로 구현하기 훈련 세트와 검증 세트를 준비합니다 IMDB데이터 세트 불러오기 skip_top 매개변수에는 가장많이 등장한 단어들중 건너 뛸 단어의 개수를 지정할수 있습니다. 예를 들어 a, the, is 등과 같은 단어들 data-science.tistory.com 앞 포스트 클래스로 구현한 RNN을 텐서플로로 구현한 내용입니다. 순환 신경망에 필요한 클래스 임포트하기 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, SimpleRNN 데이터불러오기 imp..
훈련 세트와 검증 세트를 준비합니다 IMDB데이터 세트 불러오기 skip_top 매개변수에는 가장많이 등장한 단어들중 건너 뛸 단어의 개수를 지정할수 있습니다. 예를 들어 a, the, is 등과 같은 단어들은 영화 리뷰에 많이 등장하지만 분석에 유용하지 않으므로 건너뜁니다. num_words매개변수는 훈련에 사용할 단어의 개수를 지정합니다. 메모리를 절약하기 위해 num_words에 200을 지정했습니다. import numpy as np from tensorflow.keras.datasets import imdb (x_train_all, y_train_all),(x_test,y_test)=imdb.load_data(skip_top=20,num_words=200) x_train_all.shape, y_..
파이토치로 RNN구현 파이토치에서는 nn.RNN()을 통해서 RNN 셀을 구현합니다. 실습을 통해 이해해봅시다. 우선 필요한 파이토치의 도구들을 임포트합니다. import torch import torch.nn as nn 이제 입력의 크기와 은닉 상태의 크기를 정의합니다. 은닉 상태의 크기는 대표적인 RNN의 하이퍼파라미터입니다. 여기서 입력의 크기는 매 시점마다 들어가는 입력의 크기를 의미합니다. input_size = 5 # 입력의 크기 hidden_size = 8 # 은닉 상태의 크기 이제 입력 텐서를 정의합니다. 입력 텐서는 (배치 크기 × 시점의 수 × 매 시점마다 들어가는 입력)의 크기를 가집니다. 여기서는 배치 크기는 1, 10번의 시점동안 5차원의 입력 벡터가 들어가도록 텐서를 정의합니다...
직접 Numpy로 RNN 층을 구현해보겠습니다. 앞서 메모리 셀에서 은닉 상태를 계산하는 식을 다음과 같이 정의하였습니다. h{t} = tanh(W{x}X{t} + W{h}h_{t−1} + b) #의사 코드(pseudocode)로 실제 동작하는 코드가 아님. hidden_state_t = 0 # 초기 은닉 상태를 0(벡터)로 초기화 for input_t in input_length: # 각 시점마다 입력을 받는다. output_t = tanh(input_t, hidden_state_t) # 각 시점에 대해서 입력과 은닉 상태를 가지고 연산 hidden_state_t = output_t # 계산 결과는 현재 시점의 은닉 상태가 된다. 우선 t 시점의 은닉 상태를 hidden_state_t라는 변수로 선언하..