2016-08-05 4 views
1

나는 길이 길이가 1000 인 일련의 순서를 가지고 있는데, 길이 길이를 100으로 자른다. 그래서 저는 길이 100의 901 시퀀스로 끝납니다. 첫번째 900을 trainX으로합시다. trainY은이 시퀀스 중 두 번째부터 901 번째까지입니다.1 대 1 LSTM

케라에서 나는 다음 사진 모델을 만들고 싶습니다 : enter image description here 중요한 특징은 $ X_1 $에서 $ X_2 $, $ X_2 $에서 $ X_3 $로 매핑된다는 것입니다. 내가 100 단위를 그려 내지 않았다는 사실을 무시하라.

케 라스에서는 $ X_1 $ ~ $ X_ {100} $이 (가) $ X_ {101} $에 매핑되는 모델을 만드는 방법을 알고 있습니다. 어떤가에 따라 수행됩니다

model = Sequential() 
model.add(LSTM(32, batch_input_shape=(batch_size, time_steps, 1), stateful=True, return_sequences=True)) 
model.add(Dense(1)) 

내가 return_sequences=True 말 100 개 출력이 주어진다는 사실을 보존하려고 : 많은 경우에 많은에, 그러나

batch_size = 1 
time_steps = 100 
model = Sequential() 
model.add(LSTM(32, batch_input_shape=(batch_size, time_steps, 1), stateful=True)) 
model.add(Dense(1)) 

, 다음과 같은 오류가 척 . 나는 Densebatch_size x hidden_nodes 크기의 행렬만을 입력으로 받아들이는 반면에, 내 경우에는 출력이 batch_size x time_steps x hidden_nodes 일 것이라고 생각하면 오류 Input 0 is incompatible with layer dense_6: expected ndim=2, found ndim=3을 얻을 수있다.

그래서 내 질문은 그림과 같이 동작하는 LSTM을 얻는 방법입니다. 밀도가 높은 레이어에서 현재 시간 단계의 앞에 숨겨진 레이어를 실수로 참조하지 않는 것이 중요합니다.

답변

1

다중 출력이 필요하지 않습니다. 순서에서 다음 번호를 예측하도록 모델을 교육하십시오. 그런 다음 예측 된 수를 사용하여 훈련 된 모델에 피드를 보내고 다음 모델을 예측하고이 작업을 반복하십시오. 즉 :

훈련에 대한 데이터를 준비합니다

X_train = np.zeros((901, 100)) 
y_train = np.zeros((901, 1)) 
for i in range(901) 
    x_train[i,:] = x[i:i+100] 
    y_train[i,0] = x[i+101] 

훈련 모델 :

for iteration in range(10000): 
    model.fit(x_train, y_train, batch_size = 40, nb_epoch = 2) 

를 이제, 당신이 시작하는 다음 10 수를 예측하려면 : X [t : t는 당신이해야 할 모든 (101)]

입니다 + :

x_input = np.zeros((1, 100)) 
    x_input[0, :] = x[t+i: t+i+101] 
    for i in range(10) 
     y_output = model.predict(x_input) 
     print(y_output) 
     x_input[0, 0:100] = x[t+i+1: t+i+100] 
     x_input[100] = y_output 

이 예제에서는 batch_size = 40을 사용했습니다. 그러나 아무것도 사용할 수는 있습니다 (하지만 1은 권장하지 않습니다!))

+0

참고 : 코드를 실행하지 않았습니다. 나는 방금 그것을 썼다. – Nejla

+0

그냥 이미이 버전의 예측을 수행하는 방법을 알고 있습니다. 제가 원한 모델은 여러분이 언급 한 것과 약간 다릅니다. "keras에서는 $ X_1 $ ~ $ X_ {100} $이 $ X_ {101} $에 매핑되는 모델을 만드는 방법을 알고 있습니다 (여러 사례에 한 건)." –