错误:tensorflow.python.framework.errors\u impl.InvalidArgumentError:index[3,7]=-1不在[0,20000]中

错误:tensorflow.python.framework.errors\u impl.InvalidArgumentError:index[3,7]=-1不在[0,20000]中,python,tensorflow,keras,lstm,Python,Tensorflow,Keras,Lstm,我正在就电子商务数据培训lstm。在培训期间,我遇到以下错误: tensorflow.python.framework.errors\u impl.InvalidArgumentError: 索引[3,7]=-1不在[0,20000][[Node:embedding_1/GatherV2]中 =GatherV2[Taxis=DT_INT32,Tindices=DT_INT32,Tparams=DT_FLOAT,_class=[“loc:@training/Adam/gradients/embed

我正在就电子商务数据培训lstm。在培训期间,我遇到以下错误:

tensorflow.python.framework.errors\u impl.InvalidArgumentError: 索引[3,7]=-1不在[0,20000][[Node:embedding_1/GatherV2]中 =GatherV2[Taxis=DT_INT32,Tindices=DT_INT32,Tparams=DT_FLOAT,_class=[“loc:@training/Adam/gradients/embedded_1/GatherV2_grad/reforme”], _device=“/job:localhost/replica:0/task:0/device:CPU:0”](嵌入\u 1/embeddings/read, 嵌入(1/Cast、lstm(1/TensorArrayUnstack/range/start)]]

你知道如何解决这个问题吗? 我将我的模型定义如下:

model = Sequential()
model.add(Embedding(max_features, 128))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
print('Train...')
model.fit(x_train, y_train, batch_size=batch_size, epochs=2, validation_data=(x_test, y_test))
score, acc = model.evaluate(x_test, y_test, batch_size=batch_size)

我在代码中做了以下更改,并且成功了:

我为此使用了python.cat.code

for i in range(len(columns)):
    df[columns[i]] = df[columns[i]].astype('category')
    df[columns[i]+"_cat"] = df[columns[i]].cat.codes
astype将数据列转换为类别类型,从而解决了问题