Tensorflow范围与标签

问题描述

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

我有三个ouptut标签,但错误提示233121 ...超出三个...为什么?有趣的是,当我将最后一个密集层的标签数更改为4时,一切正常。但是我不希望有4个类,因为预测矩阵会返回4个具有概率的列。

我的简单网络如下:

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'))

我怎么做错了?我有最新的tf 2.3。我只是在复制可处理原始数据的示例时更改数据输入,所以有什么想法吗?

解决方法

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