2016-12-23 1 views
2

現在、私はtflearn(VGG.Net、GoogLeNet、ResNetなど)によって提供されているネットを調べて、それらをデータセット(128 * 128増強前の画像は925画像、増強後の画像は5058画像、非癌性の画像は2種のガンが含まれています。&)。オーバーフィットを扱う:データ拡大、クロスバリデーション、ローテーション拡大

  1. 問題:トレーニングの精度(〜100%)と検証精度(〜70%)の間に大きな相違があります。

  2. 私のアプローチ:1)畳み込みカーネルを減らしてモデルの複雑さを減らす、2)完全に接続したレイヤーでノード数を減らす、3)FCでドロップアウトレートを大きくする。

  3. 質問:

1)このオーバーフィッティングの問題は不十分(トレーニング)データセットによって少なくとも-atいくつかの学位で発生しませんでしたか? 私はずっと多くの(訓練)データセットを持っていれば、妥当性の正確さが訓練の正確さに似ているように母集団(検証データセットを含む)も十分に表現されると思います。

2)クロスバリデーションは不一致を軽減するのに役立ちますか?しかし、訓練セットとして使用されることのないテストセットがあれば、私のテストaccはまだ訓練と大きな違いがあると思います。あれは正しいですか?

3)私が知る限り、畳み込みはシフト不変であるため、シフト補完は新しい情報を提供しません。回転はいかがですか? (ROIをスライスする前の回転で、境界にゼロが含まれないようにする)

ありがとう!! :D

答えて

1
  1. はい
  2. いいえ、あなたはあなたのトレーニングデータセットのサイズを変更しないではない場合。ただし、多くのデータをトレーニングデータとして使用するために、クロス検証がよく使用されます。
  3. ローテーションは、データセット内に存在する場合にのみ役立ちます。例えば、180°の回転は実際に害を及ぼします。標準画像用

グッド拡張製品はtensorflow CIFAR10 exampleで見つけることができます:

  • tf.random_crop(reshaped_image, [height, width, 3])
  • tf.image.random_flip_left_right(distorted_image)
  • tf.image.random_brightness(distorted_image, max_delta=63)
  • tf.image.random_contrast(distorted_image, lower=0.2, upper=1.8)

OVを戦うためにあなたは正規化を導入したいかもしれません。特にDropouttf.nn.dropout)である。

しかし、あまりにも似通っている必要はありません。あなたのテストデータの分布があなたのトレーニングデータとは異なることもありえます(ただし、あまり適合しない可能性があります)。