5

私のチームは、破損した/受け入れ可能な部品のバイナリ分類のためにTensorflowのCNNを訓練しています。 cifar10サンプルコードを変更してコードを作成しました。私の以前のニューラルネットワークの経験では、損失が0(非常に1をかなり下回る)に非常に近いまで、私はいつも訓練を受けました。しかし、トレーニング中に(別のGPU上で)検証セットを使用してモデルを評価しています。約6.7kステップ後に精度が上がらないように見えますが、40kステップを超えてもまだ低下しています。これはオーバーフィットのためですか?損失がゼロに非常に近いと、精度の点で別のスパイクが見られるはずですか?現在の最大精度は許容できません。それを殺してチューニングを続けなければなりませんか?何がお勧めですか?ここでは、トレーニングプロセスの変更されたコードとグラフを示します。ここでTensorflow:損失は減少しますが、精度は安定しています

https://gist.github.com/justineyster/6226535a8ee3f567e759c2ff2ae3776b

Precision and Loss Images

答えて

0

可能な問題の一つは、あなたのネットワークは、データを記憶するために始めることです、はいあなたは正則を増やす必要があり、私の提案で、

はい損失が減少すると、それを殺しますトレーニングのために、検証のための安定した精度を持って、それはあなたのネットワーク容量が低いことを意味(弱いモデル)を深くしようとする。

+0

レイヤーを追加したり、ドロップアウトレイヤーを追加すると効果がありますか? –

+0

最初にドロップアウトレイヤーを適用します。それが意味をなさない場合は、さらにレイヤーとドロップアウトを追加してください。フィルタのサイズを小さくしてチャンネルを増やしてみてください。 –

+0

私たちの画像は1つのチャンネル(白黒)です。チャンネルを増やすことについてもっと説明できますか?また、フィルタの数を変更すると精度も向上すると思いますか?現在は256です。 –

2

バイナリクロスエントロピー損失の減少は、精度の向上を意味しません。タイムステップ1,2,3および分類閾値0.5でラベル1、予測値0.2,0.4、および0.6を考慮する。タイムステップ1と2は損失の減少をもたらすが精度の向上は生じない。

トレーニングデータのオーバーフィットによってモデルの容量が十分にあることを確認してください。モデルがトレーニングデータにオーバーフィットしている場合は、ドロップアウト、L1およびL2正規化、データ拡大などの正則化手法を使用して過大フィットを避けます。

最後に、検証データとトレーニングデータが同じディストリビューションから提供されていることを確認してください。

関連する問題