필자는 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)
고마워요 :) 이제는 모델이 나에게 묻기 때문에 테스트 데이터에서 각 샘플에 대해 30 개의 타임 스텝을 만들어야합니다 (없음, 30, 1). 단 하나의 행만 제공하고 모델에서 30 행 (30 개의 시간 단계 순서대로)의 출력을 제공하면 어떨까요? 내 테스트 데이터가 여전히 모양 (1025643, 72)을 가지고 있고 결과에 모양이 있습니다 (1025643, 30, 1). –
정확하게 이해한다면 입력의 한 단계를 제공하고 다음 30 단계의 출력 단계를 생성하려고합니다. LSTM은 매 시간 단계마다 입력을 요구합니다. 단일 입력에서 30 개의 시간 단계를 생성하려면 매 단계마다 첫 번째 입력을 복제하거나 다음 시간 단계의 입력으로 LSTM의 출력을 사용하십시오 (LSTM의 입력 차원이 출력과 일치하지 않습니다. 후자의 옵션은 해당 아키텍처에서 불가능합니다). –
그래, 복제의 아이디어가 의미가 있습니다. 다시 감사합니다 :) –