Многомерный массив в качестве входных данных с помощью Embedded Layer и LSTM в Keras, получающих ошибку измерения в уровне Embedding. - PullRequest
1 голос
/ 12 февраля 2020

У меня есть многомерный массив X_train формы (1000,3162), подобный этому:

    [[[    0     0     0 ...     0     0     0]
      [    0     0     0 ...     0     0     0]
      [22175     0     0 ...     0     0     0]]

      [[    0     0     0 ...     0     0     0]
       [22175     0     0 ...     0     0     0]
       [37363 39010     0 ...     0     0     0]]

     [[22175     0     0 ...     0     0     0]
      [37363 39010     0 ...     0     0     0]
      [31559 42695     0 ...     0     0     0]]

       ...

    [[20651 31559 43650 ...     0     0     0]
     [20651 12733 40329 ...     0     0     0]
     [31559 15394 31559 ...     0     0     0]]]

Моя модель выглядит так:

      main_input = Input(shape=(162,)) # only pass in the indexes
      emb = Embedding(input_dim=3, output_dim = 162)(main_input)
      doc_output = Bidirectional(LSTM(64, return_sequences=False))(emb)
      doc_output = Dense(units=43, activation='softmax')(doc_output)
      model = Model(inputs=main_input, outputs=doc_output)
      model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
      print(model.summary())
      history=model.fit(X_train,y_train,epochs=1,batch_size=128,validation_data=(X_test, y_test))

и Я получаю эту ошибку

Ошибка при проверке ввода: ожидалось, что input_7 будет иметь 2 измерения, но получил массив с формой (1000, 3, 162)

Сводка модель здесь

enter image description here

Как добавить этот входной массив для подачи его в слой внедрения, так как данные поезда и теста являются трехмерными?

...