問題タブ [sgd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gradient-descent - 対数回帰損失の勾配
ログ回帰用のミニバッチ勾配降下を作成しようとしています。
X_batch
( shape の(n_samples, n_features)
) およびy_batch
( shape の) numpy 行列が与えられ(n_samples,)
ます。
素朴な方法は、ループを書くことです:
しかし、ループを使用することは速度に関して悪い考えのようです。より良い方法はありますか?ループのない純粋なnumpy? 何とかグラデーションの式を書き換えますか?
machine-learning - エポックの終わりに CNN トレーニング損失が定期的に急増する
Adam を使用して PyTorch で CNN をトレーニングしています。初期学習率は 1e-5 です。私のエポックには 5039 個のサンプルがあり、バッチ サイズは 1 です。エポックの終わりにトレーニング損失の規則的なスパイク パターンがあることを確認しました。以下はトレーニング損失のプロットです。
プロットから、エポックの終わりに正確に発生しているスパイクの明確なパターンを見ることができます。私のエポックには 5039 個のサンプルが含まれています。興味深いことに、スパイクは撃墜するだけでなく、時には上昇することもあります。
私がそうではないと思うのは:
これらのスパイクは、データセットをシャッフルしなければ説明できた可能性があります。ただし、エポックごとにデータセットをシャッフルします。
この動作は、エポックの最終バッチが他のバッチよりも小さく、損失の大きさが異なる場合に発生することが知られています (なぜ私のトレーニング損失には定期的なスパイクがあるのですか? )。ただし、バッチサイズが 1 であるため、私の場合はそうではありません。
潜在的なハックの 1 つは、更新ステップの前にグラデーション クリッピングを適用することです。ただし、この問題を処理するのは良い方法ではないようです。
- このスパイク パターンの理由についてどう思いますか?
- このようなパターンがあるのはどれほど悪いことですか?
training-data - CNN トレーニング結果を理解する
次の説明をいただければ幸いです:)
2 つの画像クラスを分類する CNN ネットワークをトレーニングしました。「SGD」オプティマイザーと「categorical_crossentropy」損失関数を使用しました。
私の結果は次のとおりです。 - トレーニング損失 = 0.28 - トレーニング精度 = 0.93 - 検証損失 = 0.38 - 検証精度 = 0.82
したがって、モデルが少し「過剰適合」していることは明らかです (少し過適合が良い場合もあると言う人もいます)。
私の質問は、検証の損失と検証の精度に焦点を当てています。
私のネットワークは 38% 不正確ですか、それとも 82% 正確ですか? 私は検証の損失と検証の精度について多くのことを読んできましたが、人々は次のように言っています。
「精度とは異なり、損失はパーセンテージではありません。これは、トレーニング セットまたは検証セットの各例で発生したエラーの合計です。
しかし、私はまだ結果を直感的に理解していません (38% 不正確または 82% 正確)。
どうもありがとう!:)
イヴァン