Python Tensorflow范围与标签

Python Tensorflow范围与标签,python,tensorflow,nlp,label,model-fitting,Python,Tensorflow,Nlp,Label,Model Fitting,Tensorflow要了我的命,请帮忙:)我在这里找到了一些关于我的问题的答案,但它们是无用的。。。我无法理解为什么我会收到这样的信息: InvalidArgumentError: Received a label value of 3 which is outside the valid range of [0, 3). Label values: 2 3 3 1 2 1 1 3 1 1 1 2 3 3 1 1 1 3 1 3 2 3 1 2 1 3 2 1 2 2 2 3 [

Tensorflow要了我的命,请帮忙:)我在这里找到了一些关于我的问题的答案,但它们是无用的。。。我无法理解为什么我会收到这样的信息:


InvalidArgumentError:  Received a label value of 3 which is outside the valid range of [0, 3).  Label values: 2 3 3 1 2 1 1 3 1 1 1 2 3 3 1 1 1 3 1 3 2 3 1 2 1 3 2 1 2 2 2 3
     [[node sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits (defined at <ipython-input-68-069e54b769de>:2) ]] [Op:__inference_train_function_47373]

Function call stack:
train_function

我做错了什么?我有最新的TF2.3。我只在复制使用原始数据的示例时更改数据输入。。。有什么想法吗?

您的标签应该从0开始。也就是说,消息中的值将是
[1,2,2,0,1,0,0,…]
。通常,当您有
n
类时,将标签编码为
0
n-1
之间的整数。由于您没有在定义标签的地方包含代码,很遗憾,我无法包含这方面的代码示例。

它不起作用。我将标签重新编码为0,1,2,但错误仍然存在。。。在这个例子中,我复制(这一个有效)标签是文本的[thr,bfg,tdf],最初我的标签也是文本的[a,b,c,]。谢谢你的帮助!我想我找到了解决办法。在嵌入层中,形状需要由三个参数定义:model.add(嵌入(VOCAB_SIZE,embedding_DIM,input_length=X.shape[1])重要的是,input_length需要与X.shape[1]的正确值匹配!!!它适用于我的情况(多标签分类,NLP)。
model = Sequential()
model.add(Embedding(len(word_index) + 1,
                     EMBEDDING_DIMENSION))
model.add(SpatialDropout1D(0.3))
model.add(Bidirectional(LSTM(EMBEDDING_DIMENSION)))
model.add(Dense(EMBEDDING_DIMENSION, activation='relu'))
model.add(Dropout(0.8))

model.add(Dense(EMBEDDING_DIMENSION, activation='relu'))
model.add(Dropout(0.8))

model.add(Dense(3, activation='softmax'))