Я пытаюсь построить текстовый классификатор lstm
, используя Keras
.
Это структура модели:
model_word2vec = Sequential()
model_word2vec.add(Embedding(input_dim=vocabulary_dimension,
output_dim=embedding_dim,
weights=[word2vec_weights,
input_length=longest_sentence,
mask_zero=True,
trainable=False))
model_word2vec.add(LSTM(units=embedding_dim, dropout=0.25, recurrent_dropout=0.25, return_sequences=True))
model_word2vec.add(Dense(3, activation='softmax'))
model_word2vec.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
results = model_word2vec.fit(X_tr_word2vec, y_tr_word2vec, validation_split=0.16, epochs=3, batch_size=128, verbose=0)
Где y_tr_word2vec
- трехмерный one-hot
закодированная переменная.
Когда я запускаю приведенный выше код, я получаю эту ошибку:
ValueError: Error when checking model target: expected dense_2 to have 3 dimensions, but got array with shape (15663, 3)
Я предполагаю, что проблема может иметь форму y_tr_word2vec
или измерение batch size
, но я не уверен.
Обновление:
Я изменил return_sequences=False
, y_tr_word2vec
с one-hot
на categorical
, 1
нейрон в плотном слое, и теперь я использую sparse_categorical_crossentropy
вместо categorical_crossentropy
.
Теперь я получаю эту ошибку: ValueError: invalid literal for int() with base 10: 'countess'
.
Поэтому теперь я предполагаю, что во время fit()
, что-то не так с входным вектором X_tr_word2vec
, который содержит предложения.