我接到了一項任務,學習如何創建一個可以對影像進行分類的模型。做了一個之后,我得到了 100% 的準確率,所以我決定削減我的模型層,直到我做更糟糕的事情。我洗掉了輸入資料、Conv2D 層、MaxPooling2D 層和密集隱藏層的標準化。
我現在歸結為我認為的基本情況,而且我仍然獲得 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
uj5u.com熱心網友回復:
當我得到 100% 的準確率時,我想到了一個過度擬合的問題,但是你的模型太簡單了。
得到 100% 的訓練我沒問題,但在測驗集上,我不這么認為。
所以你可能犯了一些可能的錯誤:
- 您可能會將資料泄露到測驗集
- 您正在使用一個小資料集
- 您的資料集相似或重復
- 檢查資料分布,您可能有一個類別包含大部分資料,而其他類別的資料很少。
作為建議,您可以將另一個指標添加precision or recall到您的指標陣列中并查看結果。
也檢查這個類似的帖子你可能會得到一些提示
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/391935.html
