【发布时间】:2020-09-02 04:48:56
【问题描述】:
我正在尝试建立一个模型来分类一些数据(4 个类)。
这是我尝试过的:
from keras.models import Sequential
from keras.layers import Dense
# dividing X, y into train and test data
X_train, X_test, y_train, y_test = train_test_split(X_data, y_target, random_state=0)
# define the keras model
model = Sequential()
model.add(Dense(64, input_dim=9, activation='relu'))
model.add(Dense(4, activation='softmax'))
# compile model
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit the model on the dataset
train_history = model.fit(X_train, y_train, epochs=100, batch_size=20, verbose=0, validation_data=(X_test, y_test))
# evaluate the keras model
_, accuracy = model.evaluate(X_data, y_target, verbose=0)
print('Accuracy: %.3f' % (accuracy*100))
我收到此错误:
Received a label value of 4 which is outside the valid range of [0, 4).
有人可以帮我理解我的模型有什么问题吗?
【问题讨论】:
-
总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。还有其他有用的信息。
-
你使用什么数据?您使用标签
0,1,2,3或1,2,3,4吗?模型需要标签0,1,2,3,但它得到4 -
谢谢@furas。它在我将最后一层更改为 5 时起作用。这意味着,我猜它从 0 开始计数到 4。(1)如何从中获取混淆矩阵,以便我可以看到输出数组? (2) 如果是单个类,我会在最后一层给出 1,而不是 0。那么,当我有 4 个类时,为什么它与值为 5 的最后一层一起工作?
-
我使用了标签 1、2、3、4
-
您将不得不更改为
0,1,2,4,但使用 pandas 没问题 -df["label"] = df["label"] - 1
标签: python tensorflow machine-learning keras neural-network