Я пытаюсь построить модель NER, которая поможет мне классифицировать слова. Я застрял в получении несоответствия размеров слоя, так как я новичок в этом пространстве.
Мои входные данные - предложения - 43163 из них длиной 70.
Таким образом, каждое предложение состоит из 70 слов (после заполнения / усечения), в общей сложности 43163 из них.
Мой X_train, следовательно, имеет форму (43163, 70)
Мой y_train имеет форму (43163, 70, 17)
где каждое слово было преобразовано в однократное кодирование длиной 70 (что соответствует тегу NER, которому оно принадлежит)
Слова являются токенизированными, и в общей сложности 35173 токена
Я хочу преобразовать их в вложения, которые будут изучены (я не хочу использовать стандартные вложения word2vec и Glove)
Эти вложения теперь должны быть вписаны в LSTM, который затем может быть передан DenseLayer, наконец, давая мне классификацию.
Я пытался просмотреть эти блоги (вы увидите, что мой код выглядит довольно похоже), но безрезультатно -
https://machinelearningmastery.com/predict-sentiment-movie-reviews-using-deep-learning/
https://machinelearningmastery.com/develop-bidirectional-lstm-sequence-classification-python-keras/
#X_tr.shape = (43163, 70)
#y_train.shape = (43163, 70, 17)
#X_te.shape = (4796, 70)
#y_te.shape = (4796, 70, 17)
The model is -
total_words = 35173 #this is the unique tokens
embedding_vecor_length = 32
model = Sequential()
model.add(Embedding(total_words, embedding_vecor_length, input_length=70))
model.add(LSTM(100))
model.add(Dense(17, activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
Это ошибка, которую я получаю -
ValueError: Ошибка при проверке целевого объекта: ожидалось, что плотность_данных имеет 2 измерения, но получен массив с формой (43163, 70, 17)
Пожалуйста, помогите мне понять, где я иду неправильно или как это исправить?