train lossとtest lossの結果分析


転入先https://blog.csdn.net/jacke121/article/details/79874555,https://blog.csdn.net/weixin_38796572/article/details/80488229
train lossは絶えず下がって、test lossは絶えず下がって、ネットがまだ勉強していることを説明します;
train lossは絶えず低下し、test lossは不変になり、ネットワークがフィットしていることを示している.
train lossは不変になり、test lossは絶えず低下し、データセット100%に問題があることを示している.
train lossは不変になり、test lossは不変になり、学習がボトルネックに直面し、小学校の学習率やロット数を減らす必要があることを示している.
train lossは絶えず上昇し、test lossは絶えず上昇し、ネットワーク構造の設計が適切でないこと、訓練超パラメータの設定が適切でないこと、データセットが洗浄されたことなどの問題を説明した.
二、
これは比較的に長くて、比較的に完全なLossとニューラルネットワークの訓練
https://blog.csdn.net/u011534057/article/details/51452564
1.勾配検査2.訓練前検査、3.訓練中の監視4.第1層の可視化5.モデルの融合や最適化など
三、https://www.zhihu.com/question/38937343
四、https://blog.csdn.net/u010911921/article/details/71079367
原文住所:http://blog.csdn.net/u010911921/article/details/71079367このcaffeを使用する際に遭遇した2つの問題は,訓練中にlossがほぼ定数値を維持していることであり,ここで記録する.
1.loss=87.33不変
lossが87.33に等しいという問題は、Inception-V 3ネットワークに対してfine-tuningでもtrainでも、ネットワークが何回反復しても、ネットワークのlossは一定に保たれている.
関連資料を調べたところ、lossの最大値はFLT_MIN計算、FLT_MINはその対応する自然対数がちょうど-87.3356であり、これはloss保持87.3356に対応している.
これはsoftmaxが計算の過程で得られた確率値がゼロになったことを示しているが、softmaxは指数関数で計算するため、指数関数の値はいずれも0より大きいので、計算の過程でfloatオーバーフローの異常が現れたはずである、すなわちinf,nanなどの異常値がsoftmax出力を0に導いたのである.
ソフトmax以前のfeature値が大きすぎると、ソフトmaxが指数を先に求めるためfloatのデータ範囲を超えinfとなる.infと他の任意の数値の和はinfであり、softmaxは除算時に任意の正常範囲の数値をinfで割ると0になる.そしてlossを求めると87.3356が現れた.
解決策
ソフトmax入力のfeatureは2つの部分から計算される:一部は入力データであり、もう一部は各層の重み値などからなる
  • は、ソフトmaxの入力featureが比較的小さい範囲
  • にあるように初期化重みを減少させる.
  • 学習率を低下させることにより、重みの変動範囲
  • を減少させることができる.
  • BN(batch normalization)層がある場合、finetuneの場合はBNのパラメータを凍結しないほうがよい.そうしないと、データ分布が一致しないと出力値が大きくなりやすい(batch_norm_paramuse_global_statsfalseに設定することに注意).
  • データに異常サンプルまたは異常labelが存在するかどうかを観察し、データ読み出し異常が本明細書で発生した場合、学習率を低下させる方法を採用し、learning rateを0.01または元のlossに設定する.

  • 2.loss 0.69程度保持
    VGG-16を用いて二分類問題を行っているので、lossを計算するときは以下の式と等価です.

     
    p=0.5の場合、lossはちょうど0.693147であり、すなわち訓練中、ネットワークを調整しても収束しない.最初のネットワーク構成ファイルのボリュームレイヤのパラメータは次のとおりです.
    VGG−16から訓練したモデルからfine−tuningを行っても変化はなく,ネットワークに初期化パラメータとdecay_multを加えた後,再びネットワークを訓練して収束を開始した.
    しかし、具体的には何が原因なのか、まだ見つかっていませんが、初期化パラメータの問題なのか、それとも?
    参考資料
    http://blog.csdn.net/jkfdqjjy/article/details/52268565?locationNum=14
    https://groups.google.com/forum/#!topic/caffe-users/KEgrRlwXz9c
     
    https://www.zhihu.com/question/68603783
     
    lossがずっと下がらない原因はたくさんあって、最初から最後までフィルタリングすることができます:1)データの入力が正常かどうか、dataとlabelが一致しているかどうか.2)ネットワークアーキテクチャの選択は,一般に深いほどよいが,データセットにも分けられる.さらにビッグデータセットにpre-trainを用いないパラメータも重要な3)loss対を用いる.
     
     
    tensorflow小結:
    1 attempt to use uninitialized variable .すべての変数2 setting an array element with a sequenceは初期化されていません.行列の列は整列していません3訓練模型LOSS降下精度は下がっていますloss目標関数が書き間違えた可能性が高い4テスト精度は0 TestはTrainと1つのsess対話の中でありません
    5 tensorbaoardはストレージパスに中国語名がないことを表示できません.ストレージパスは'/'ではなく'/'でなければなりません.ログファイルは決してデスクトップに置かないでください
    7 batchsizeの質問:
    中国語はバッチサイズ(バッチサイズ)に翻訳されます.深い学習では、SGD訓練が一般的に採用されている.すなわち、訓練のたびにbatchsize個のサンプル訓練を訓練集中で取る.
    iteration:中国語の翻訳は反復で、1つのiterationはbatchsizeのサンプルを使って1回訓練することに等しい.1つの反復=1つの順方向通過+1つの逆方向通過epoch:反復回数、1つのepochは訓練セットを使用するすべてのサンプルを1回訓練することに等しい.1つのepoch=すべての訓練サンプルの1つの順方向伝達と1つの逆方向伝達の例を挙げると、訓練セットには1000サンプルがあり、batchsize=10である.では、完全なサンプルセットを訓練するには、100回のiteration、1回のepochが必要である.
    8:lossが下がらない:モデルの学習能力が足りない.
    また、どのデータソースでもNN、CNN、LSTMで良い効果が得られるというわけではなく、多くの要因に影響されています.一方,モデルの「体積」の大きさ,学習率など,モデルの超パラメータの設定問題である.一方、データの特徴も重要で、データの不均衡問題は私が直面した最も頭の痛い問題なので、モデルを作る前に、データに対していくつかの処理と分析を行う必要があります.