如何处理keras中的无效参数错误

sha*_*nuo 0 keras

尝试使用 keras 训练模型时出现此错误。

InvalidArgumentError: 索引 [48,2] = 5388 不在 [0, 5388)
[[节点: 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:CPU:0"](embedding_1/embeddings/read, embedding_1/Cast, training/RMSprop/gradients/embedding_1/embedding_lookup_grad/concat /轴)]]

实际线路是这样的...

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)
Run Code Online (Sandbox Code Playgroud)

纪元 1/50 73/237 [========>.........] - 预计到达时间: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

小智 5

您的嵌入层定义为:

# Encoder
encoder_inputs = Input(shape=(None,))
enc_emb =  Embedding(num_encoder_tokens, latent_dim, mask_zero = True)(encoder_inputs)
Run Code Online (Sandbox Code Playgroud)

令牌索引 0 被认为是一个特殊值(无输入);所以你需要用 num_encoder_tokens + 1 定义一个嵌入。

您已经将 1 添加到 num_decoder_tokens ;你需要对 num_encoder_tokens 做同样的事情。