1
爲了自動質量控制的目的,我設計了CNN來分類圖像。輸入圖像爲320 x 320像素。我有5個conv層,FC層有512個輸出,最後一層只有兩個輸出:'好'或'壞'。質量控制必須以1.0的精度完成。我正在使用tensorflow。基於CNN的二元分類器的設計
我是CNN的初學者,在評估模型時遇到問題。雖然我確實在訓練集上有1.0的準確性,有時也在驗證集上,但我擔心成本函數的價值。我的模型輸出非常大的logits,如果我softmax這些logits,我總是得到100%的「好」或「壞」概率。因此,如果我的模型正確地預測了示例,則成本(以cross_entropy_with_logits計算)爲0.如果所有訓練示例都被正確預測,那麼權重不會再發生變化,並且我的模型不會改進驗證集的性能。
這裏是我的模型(含批10例)的輸出示例:
Logits
[[ 2169.41455078 2981.38574219]
[ 2193.54492188 3068.97509766]
[ 2185.86743164 3060.24047852]
[ 2305.94604492 3198.36083984]
[ 2202.66503906 3136.44726562]
[ 2305.78076172 2976.58081055]
[ 2248.13232422 3130.26123047]
[ 2259.94726562 3132.30200195]
[ 2290.61303711 3098.0871582 ]
[ 2500.9609375 3188.67456055]]
Softmax:
[[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]]
cost calculated with tf.nn.softmax_cross_entropy_with_logits
[ 811.97119141 0. 874.37304688 0. 933.78222656
670.80004883 0. 0. 807.47412109 0. ]
你認爲什麼是這裏的問題?我的CNN對於應用來說太複雜了,並且輸出100%的概率?我的CNN只是過度配合?你輟學會有幫助嗎?
謝謝你的回答。我現在正在使用權重和丟失圖層的正則化,但這並沒有解決問題。我還將Relu激活添加到所有的conv層。這種操作將成本提高到數十萬和數百萬,並保持非常高的精度(超過0.99)。這個問題是否可能由非常小的數據集(500個示例)引起? – Marcin
500個示例是小數據集。如果你可以收集更多的數據,更大的數據集肯定會緩解過度擬合。你有沒有試圖增加掉率以查看準確性是否下降? –
是的,我試圖提高下降率和準確性略有下降。我的模型的輸出logits仍然很大,結果在1.0或0.0分類。 – Marcin