Как обрабатывать ошибочные аргументы в керасе - PullRequest
0 голосов
/ 26 февраля 2019

Получение этой ошибки при попытке обучить модель с использованием керас.

InvalidArgumentError: indices [48,2] = 5388 отсутствует в [0, 5388)
[[Node: embedding_1/ embedding_lookup = GatherV2 [Taxis = DT_INT32, Tindices = DT_INT32, Tparams = DT_FLOAT, _class = ["loc: @ training / RMSprop / Assign_1"], _device = "/ job: localhost / replica: 0 / task: 0 / device: 0 / device:CPU: 0 "] (embedding_1 / embeddings / read, embedding_1 / Cast, обучение / RMSprop / градиенты / embedding_1 / embedding_lookup_grad / concat / axis)]]

Фактическая строка такая ...

model.fit_generator(generator = generate_batch(X_train, y_train, batch_size = batch_size),
                    steps_per_epoch = train_samples//batch_size,
                    epochs=epochs,
                    validation_data = generate_batch(X_test, y_test, batch_size = batch_size),
                    validation_steps = val_samples//batch_size)

Эпоха 1/50 73/237 [========> .....................]- ETA: 32:10 - потери: 7,4517 - в соотв. 0,1711

И весь код здесь ...

https://github.com/shantanuo/pandas_examples/blob/master/deep_learn/WordLevelEngMarNMT.ipynb

Код клонирован из... https://github.com/hlamba28/Word-Level-Eng-Mar-NMT

1 Ответ

0 голосов
/ 26 февраля 2019

Ваш слой для встраивания определяется как:

# Encoder
encoder_inputs = Input(shape=(None,))
enc_emb =  Embedding(num_encoder_tokens, latent_dim, mask_zero = True)(encoder_inputs)

Индекс токена 0 считается специальным значением (без ввода);поэтому вам нужно определить Embedded с помощью num_encoder_tokens + 1.

Вы уже добавляете 1 к num_decoder_tokens;вам нужно сделать то же самое для num_encoder_tokens.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...