私は、自動品質管理の目的で画像を分類するようにCNNを設計しました。入力イメージは320 x 320ピクセルです。私は5 convレイヤー、512出力のFCレイヤー、2つの出力のみを持つ最終レイヤーを持っています:「良い」か「悪い」。品質管理は1.0精度で行わなければならない。私はテンソルフローを使用しています。CNNに基づくバイナリクラシファイアの設計
私はCNN初心者で、私のモデルの評価に問題があります。トレーニングセットでは1.0の精度が得られますが、時にはバリデーションセットでも得られますが、コスト関数の値が心配です。私のモデルは非常に大きなロジットを出力し、これらのロジットをソフトマックスすると、常に「良い」または「悪い」という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は単にオーバーフィットですか?ドロップアウトが助けになるのですか?
ありがとうございました。私は今ウェイトとドロップアウト層の正則化を使用していますが、これは問題を解決しませんでした。私はすべてのconvレイヤにReluのアクティベーションを追加しました。このオペレーションは、コストを数十万、数百万に増加させ、非常に高い精度(0.99以上)を維持しました。非常に小さなデータセット(500例)によって問題が発生する可能性はありますか? – Marcin
500の例は小さなデータセットです。より多くのデータを収集することができれば、データセットが大きくなると間違いなく過不足が緩和されます。ドロップ率を上げようとしましたが、精度が低下するかどうかを確認しましたか? –
はい私はドロップ率を上げようとしましたが、精度は少し落ちました。私のモデルの出力ロットはまだ非常に大きく、結果は1.0または0.0の分類になります。 – Marcin