我的任务是学习如何创建一个可以对图像进行分类的模型。在创建一个模型后,我获得了100%的准确率,所以我决定削减我的模型层,直到我变得更糟。我删除了输入数据的归一化,Conv2D层,MaxPooling2D层和Dense Hidden层。
我现在只剩下我认为的最基本的东西了,我仍然得到了100%的准确性,我严重怀疑这是准确的。对测试数据进行手动抽查,它似乎通过了,但我很困惑为什么。
当运行时,我得到的唯一警告是2021-12-21 14:05:19.952543: W tensorflow/python/util/util.cc:368] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.
我的模型
model = keras.Sequential()
model.add(keras.Input(shape=(IMG_WIDTH, IMG_HEIGHT, 3,)))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(NUM_CATEGORIES, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
字符串model.summary()
个
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
flatten (Flatten) (None, 2700) 0
dense (Dense) (None, 43) 116143
=================================================================
Total params: 116,143
Trainable params: 116,143
Non-trainable params: 0
_________________________________________________________________
None
型model.fit(x_train, y_train, epochs=EPOCHS)
个
Epoch 1/10
500/500 [==============================] - 1s 2ms/step - loss: 32.7355 - accuracy: 0.8956
Epoch 2/10
500/500 [==============================] - 1s 2ms/step - loss: 3.2202e-07 - accuracy: 1.0000
Epoch 3/10
...
Epoch 9/10
500/500 [==============================] - 1s 2ms/step - loss: 2.1457e-08 - accuracy: 1.0000
Epoch 10/10
500/500 [==============================] - 1s 2ms/step - loss: 1.6482e-08 - accuracy: 1.0000
型model.evaluate(x_test, y_test, verbose=2)
个
333/333 - 1s - loss: 1.3704e-08 - accuracy: 1.0000 - 510ms/epoch - 2ms/step
型
我手动查看了模型输入数据的随机样本,其输出和相关的标签,我看不到我的标签编码到输入中,输出确实匹配我的标签。
i = x_test[10:11]
r = model.predict(x_test[10:11])
l = y_test[10:11]
print(i)
print(np.argmax(r), np.argmax(l))
型
结果
[[[[101 111 157]
[101 111 157]
[116 122 157]
...
[ 82 104 88]
[ 56 85 81]
[ 55 79 86]]
[[101 111 157]
[101 111 157]
[116 122 157]
...
[101 131 160]
[ 99 128 156]
[ 89 122 149]]]]
12 12
型
2条答案
按热度按时间eni9jsuy1#
当我得到100%的准确率时,我想到了一个过度拟合的问题,但是你的模型太简单了。
在训练中得到100%的成绩是可以的,但在测试集上,我不这么认为。
你可能犯的一些错误:
1.您可能会将数据泄露给测试集
1.您正在使用小型数据集
1.您的数据集相似或存在重复数据集
1.检查数据分布,你可能有一个类别拥有大部分数据,而其他类别只有少量数据。
作为一个建议,你可以添加另一个指标,如
precision or recall
到你的指标数组,并查看结果。也检查这个类似的post你可能会得到一些提示
iyfamqjs2#
如果您过去经常复制数据以增加数据量(即,您的数据由重复的相同数据组成),就会出现此问题。
数据的简单性也可能是一个问题(但获得100%准确率的概率很低)。
祝你好运。