1

を増加させません。私は彼らが2つの異なる実験に由来しているが、両方の結果が同じ生物学的画像であることを意味する。 深いCNNを使ってバイナリ分類を行いたいと思っています。テスト精度と列車精度に関して以下の結果があります。青い線は列車精度を示し、赤線はほぼエポック後の試験精度を示しています。なぜ、テストの精度はほぼ一定で、上がらないのですか?その理由はテストです。データセットは異なるディストリビューションから来ていますか? enter image description hereなぜ試験精度は一定のままで、テストや電車のデータセットが異なるソースからあるとき、私は<strong><em>電車</em></strong>データセットと2つの異なるソースからの<strong><em>テスト</em></strong>データセットを持つバイナリ分類で

編集: ドロップアウトレイヤー、整理条件と平均減算を追加した後、私はまだモデルが最初からオーバーフィッティングしているという奇妙な結果を得ています。

enter image description here enter image description here

答えて

3

2つの理由があるかもしれません。まず、トレーニングデータに余裕ができます。これは、検証スコアをテストデータの比較メトリックとして使用することで検証できます。もしそうなら、標準的なテクニックを使って体重の減衰や脱落などの過仕掛けと戦うことができます。

もう1つは、あなたのデータがこのように学習するにはあまりにも異なるということです。これは解決するのが難しいです。まず、両方の画像の値の分散を確認する必要があります。彼らはどちらも正規化されていますか? Matplotlibはプロットされた画像に対して自動的に正規化されます。それでも問題が解決しない場合は、トレーニングデータをテストデータと似ているようにするために、拡大を検討してください。ここでは、trainsetとtestsetの両方を見ることなく、何を使うべきかを伝えることはできません。

編集:

正規化のためのテストセットとトレーニングセットは、同様の値の広がりを持っている必要があります。データセットの正規化を行う場合、トレーニングセットの平均と標準偏差を計算します。しかし、計算された値をテストセットで使用し、テストセットからテストセット値を計算する必要もありません。これは、値のばらつきがトレーニングセットとテストセットの両方で似ている場合にのみ意味があります。これが当てはまらない場合は、最初に標本正規化を行うことをお勧めします。

すべてのデータセットで一般的に使用されるその他の拡張は、オーバーサンプリング、ランダムチャンネルシフト、ランダム回転、ランダム変換、ランダムズームです。これにより、あなたはそれらの操作に変わります。

+0

はい、データ拡張部で正しく機能します。それが良い機械学習モデルの鍵です。 –

+0

平均値と標準偏差値を使用して列車データセットの平均減算による正規化を行っています。次の手順を実行します scaled_train =(train - train_mean)/ train_std_deviation データ拡張のために何ができるのですか? scaled_test =(test - train_mean)/ train_std_deviation – ga97rasl

+0

私の答えを編集しました。 –