1

일부 값 예측 프로세스를 설정하려고합니다. 현재, 나는 아래의 코드에서 문제가 무엇인지 이해할 수 없다 :LSTM 모델링을위한 Keras 옵션 설정

인상 예외 ('순차 모델의 첫 번째 레이어해야'의 코드를 실행 한 후

 in_neurons = 1 
     out_neurons = 1 
     hidden_neurons = 20 
     nb_features = 9 

     # retrieve data 
     y_train = train.pop(target).values 
     X_train = pd.concat([train[['QTR_HR_START', 'QTR_HR_END', 'HOLIDAY_RANK_', 'SPECIAL_EVENT_RANK_', 
            'IS_AM', 'IS_TOP_RANKED', 'AWARDS_WINS_ANY', 'YEARS_SINCE_RELEASE']], 
          pd.DataFrame({'DATETIME': pd.DatetimeIndex(train['DATETIME']).astype(np.int64)})]) 
     X_train = X_train.values 

     y_test = test.pop(target).values 
     X_test = pd.concat([test[['QTR_HR_START', 'QTR_HR_END', 'HOLIDAY_RANK_', 'SPECIAL_EVENT_RANK_', 
            'IS_AM', 'IS_TOP_RANKED', 'AWARDS_WINS_ANY', 'YEARS_SINCE_RELEASE']], 
      pd.DataFrame({'DATETIME': pd.DatetimeIndex(test['DATETIME']).astype(np.int64)})]) 
     X_test = X_test.values 

     model = Sequential() 
     model.add(TimeDistributed(Dense(8, input_shape=(X_train.shape[0], 100, nb_features), activation='softmax'))) 
     model.add(LSTM(4, dropout_W=0.2, dropout_U=0.2)) 
     model.add(Dense(1)) 
     model.add(Activation("sigmoid")) 
     model.compile(loss="mean_squared_error", optimizer="rmsprop", metrics=['accuracy']) 

, 나는 예외를 얻었다 예외 :. 순차 모델의 첫 번째 층은 input_shape 또는 batch_input_shape 인수를 받아야합니다

내가 잘못 곳에 조언을 주시기 바랍니다

01 23,516,

EDIT1 : 공식 문서에 언급 된대로 난 그냥 모델을 구성 - http://keras.io/layers/recurrent/

model.add(LSTM(32, input_dim=nb_features, input_length=100)) 
model.compile(loss="mean_squared_error", optimizer="rmsprop", metrics=['accuracy']) 

예외 : 체크 모델 입력 오류 : 예상 lstm_input_1 3 개 차원을 가지고 있지만 모양과 배열을 가지고하는 (48614 , 9)

+1

을 내가 Keras 당신이 연속 시퀀스로 데이터를 분할 할 것으로 예상 생각 데이터. 이것이 입력 데이터가 3 차원을 가질 것으로 기대하는 이유입니다. [이 튜토리얼] (http://danielhnyk.cz/predicting-sequences-vectors-keras-using-rnn-lstm/)에서 데이터가 어떻게 준비되어 있는지 살펴보십시오. – sietschie

답변

3

이전이지만 게시 할 예정입니다. 오류로 표시된대로 입력 요청자 인 3D 데이터 인 Keras. 샘플, 시간 단계, 기능입니다. 당신이 가지고있는 사실에도 불구하고 (48614, 9) Keras는 그것을 2D로 취합니다 - [표본, 기능]. 그것을 해결하기 위해이

def reshape_dataset(train): 
    trainX = numpy.reshape(train, (train.shape[0], 1, train.shape[1])) 
    return numpy.array(trainX) 

x = reshape_dataset(your_dataset_48614, 9) 

같은 지금 X48614,1, 9해야 할 [샘플, 시간 단계는 기능] - 3D

+0

'model.add (RepeatVector (1))'를 사용할 수도 있습니다. 추가 치수가 추가됩니다. – indraforyou