Встраивание Keras: индексы [15,138] = 12635 не в [0, 12635)

#python #keras #tf.keras

#python #keras #tf.keras

Вопрос:

Я определил свою модель как:

 model = Sequential()
model.add(Embedding(12635, 300, weights=[embedding_matrix],
                   input_length=140, trainable=False))
model.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Dropout(0.2))
model.add(LSTM(300))
model.add(Dropout(0.2))
model.add(Dense(1, activation='sigmoid'))
 

Однако при обучении модели я получаю сообщение об ошибке, что indexes[15, 138] = 12635 отсутствует в [0, 12635). Как мне это исправить?

Ответ №1:

Ошибка сообщает вам, что ожидается, что ваши входные данные будут находиться в диапазоне [0, input_dim), где input_dim — это параметр, который вы передали на уровень встраивания. Но данные, которые вы передаете, имеют большее значение.

Перед передачей входных данных убедитесь, что все ваши входные значения меньше, чем input_dim . Это просто выглядит как единичная ошибка, когда размер вашего словаря равен 12635 1. Обратите внимание, что обычной практикой является исключение значения 0 в качестве идентификатора токена. Проверьте, резервирует ли ваш токенизатор 0, а затем используйте «индекс токена 1» в качестве идентификатора токена.

Комментарии:

1. Да, 0 token_id выдавал ошибку. Исправлено, большое спасибо!

2. Если вы считаете вопрос ответом, пожалуйста, отметьте его так, приняв ответ. В противном случае он все равно будет отображаться в списке вопросов без ответов. Спасибо.