2017-05-03 2 views
0

LSTM RNN의 입력으로 데이터 시퀀스를 정확히 인코딩하는 방법을 혼동합니다.RNN의 입력 데이터 형식

바닐라 DNN에는 모든 레이블에 대한 입력이 있습니다. RNN의 "입력"은 무엇입니까? 레이블과 연관된 순차적 이벤트를 훈련시키기 위해 데이터 세트 (또는 시퀀스)가 필요하지 않습니까?

순차 정보를 인코딩하는 방법이 혼란 스럽습니다. 주어진 레이블과 관련된 입력이 두 개 이상 있어야하기 때문입니다.

답변

1

코드에 예제를 작성해 보겠습니다.

문장의 각 단어가 벡터 (word2vec의 벡터 일 수도 있음)로 인코딩되는 문장이 있다고 가정 해보십시오.

각 문장을 두 클래스 (0, 1) 중 하나로 분류한다고 가정 해 보겠습니다. 다음과 같이 간단한 분류자를 만들 수 있습니다.

import numpy as np 
from keras.models import Sequential 
from keras.layers import LSTM, Dense 

# each example (of which we have a 100) is a sequence of 10 words and 
# each words is encoded as 16 element vectors 

X = np.random.rand(100, 10, 16) 
y = np.random.choice(2, 100) 

model = Sequential() 
model.add(LSTM(128, input_shape=(10, 16)) 
model.add(Dense(1, activation='sigmoid')) 
model.compile(loss='binary_crossentropy', optimizer='sgd') 

# fit model 
model.fit(X, y, epochs=3, batch=16) 
1

는 주어진 라벨

예 당신이 옳다과 관련된 하나의 입력보다 더이 있어야 것으로 보인다. 실제로 입력 내용은 3D 행렬이어야합니다. 예를 들어 n 개의 시퀀스가있는 경우 각 시퀀스의 길이는 m이고 각 시퀀스 데이터에는 d 개의 특성이 있습니다. RNN의 입력은 dimension (n, m, d)이어야합니다. 당신은 시계열 (X1,..,Xt)이 있고 하나의 수평선을 예측하고 길이 3의 순서를 사용하여 예측을 훈련 할 경우

0

예를 들어, 사용자의 입력과 출력이 될 것입니다 :

[[X1,X2,X3]] [X4] 
[[X2,X3,X4]] [X5] 
... 
[[Xt-3,Xt-2,Xt-1]] [Xt] 

그래서, t-3 시퀀스가 ​​있고,이 시퀀스 각각은 길이가 3이고 1 개의 피쳐를 갖는다. 차원은 (t-3,3,1)이어야합니다.