4

トレーニングの損失スムーズで、検証の損失がエポック全体でノイズが多い(リンクを参照)理由について 何か考えはありますか? この Kaggle コンペティションで提供された眼底写真のデータセットを使用して、糖尿病性網膜症の検出 (バイナリ分類)のための深層学習モデルを実装しています。TensorflowバックエンドでKeras 2.0を使用しています。

データ セットが大きすぎてメモリに収まらないため、トレーニング フォルダと検証フォルダからランダムに画像を取得して を使用fit_generatorしています。ImageDataGenerator

# TRAIN THE MODEL
model.fit_generator(
    train_generator,
    steps_per_epoch= train_generator.samples // training_batch_size,
    epochs=int(config['training']['epochs']),
    validation_data=validation_generator,
    validation_steps= validation_generator.samples // validation_batch_size,
    class_weight=None)

私たちの CNN アーキテクチャは VGG16 で、最後の 2 つの完全に接続されたレイヤーでドロップアウト = 0.5、最初の完全に接続されたレイヤーの前でのみバッチ正規化、およびデータ拡張 (画像を水平方向と垂直方向に反転することで構成される) です。トレーニングと検証のサンプルは、トレーニング セットの平均と標準偏差を使用して正規化されています。バッチサイズは 32 です。アクティベーションは asigmoidで、損失関数はbinary_crossentropyです。Github で実装を見つけることができます

高度に正則化されたモデルで試してみたところ、動作はまったく同じであったため、オーバーフィッティングとはまったく関係ありません。検証セットからのサンプリングに関連していますか? 以前に同様の問題を抱えた人はいますか?

ありがとう!!

4

1 に答える 1