2017-10-17 9 views
1

필자는 1025643 개의 항목과 72 개의 기능/속성의 테스트 데이터를 가지고 있습니다. 필자는 모양 (245, 30, 72)을 가진 입력 데이터 trainX와 모양 (245,)을 가진 trainY를 가진 lstm을 교육했습니다. 또한 나는 look-back을 trainX의 30 번째 단계 (245, 30, 72)가되도록 지정했다.lstm 모델의 Output_shape

이제 모델을 훈련 후 나는 할 경우

model.output_shape

출력은 다음과 같습니다

(없음, 1)

내가 이해하는 것은 그것을 줄 것이다 없습니다 테스트 세트에 대한 한 단계 예측. 그러나 테스트 세트의 모든 행 (출력이 내 경우에는 (1025643, 30, 1)이어야 함)에 대해 예측의 30 행 (앞으로의 각 단계마다 하나씩)이 필요합니다. 데이터 셰이프를 사용하여 변경해야 할 사항은 무엇입니까? 나는 tensorflow backend와 python 3.6을 사용하여 keras lstm을 사용하고 있습니다. 내 모델

코드는 다음과 같습니다

model = Sequential() 
model.add(LSTM(100, return_sequences=True, input_shape = (trainX.shape[1], trainX.shape[2]))) 
model.add(LSTM(100, return_sequences = False)) 
model.add(Dense(1, activation='linear')) 

model.compile(loss='mse', optimizer='adam') 

model.fit(trainX, trainY, epochs=50, shuffle=False, verbose=1) 

답변

1

마지막 LSTM 층에 return_sequences=False 매개 변수는 모두 30 개 시간 간격 후 출력을 반환 LSTM됩니다. 마지막 LSTM 레이어에서 return_sequences=True을 30 개의 출력 (매 시간 단계마다 하나씩)으로 사용하려는 경우 출력 모양은 (None, 30, 1)이됩니다.

Keras의 LSTM에 대한 자세한 설명은 here을 참조하십시오.

+0

고마워요 :) 이제는 모델이 나에게 묻기 때문에 테스트 데이터에서 각 샘플에 대해 30 개의 타임 스텝을 만들어야합니다 (없음, 30, 1). 단 하나의 행만 제공하고 모델에서 30 행 (30 개의 시간 단계 순서대로)의 출력을 제공하면 어떨까요? 내 테스트 데이터가 여전히 모양 (1025643, 72)을 가지고 있고 결과에 모양이 있습니다 (1025643, 30, 1). –

+0

정확하게 이해한다면 입력의 한 단계를 제공하고 다음 30 단계의 출력 단계를 생성하려고합니다. LSTM은 매 시간 단계마다 입력을 요구합니다. 단일 입력에서 30 개의 시간 단계를 생성하려면 매 단계마다 첫 번째 입력을 복제하거나 다음 시간 단계의 입력으로 LSTM의 출력을 사용하십시오 (LSTM의 입력 차원이 출력과 일치하지 않습니다. 후자의 옵션은 해당 아키텍처에서 불가능합니다). –

+0

그래, 복제의 아이디어가 의미가 있습니다. 다시 감사합니다 :) –