3

使ってます

net = newfit(in,out,lag(j),{'tansig','tansig'});

新しいニューラルネットワークを生成します。の数のデフォルト値はvalidation checksです6

私は多くのネットワークをトレーニングしていますが、これには多くの時間がかかります。結果をかなり速くすることができれば、私の結果が少し不正確であるかどうかは問題ではないと思います。

どうすればより速くトレーニングできますか?

  • 検証チェックの数を減らすのも一つの方法だと思います。どうすればそれを行うことができますか(GUIを使用せずにコードで)
  • 速度を上げる他の方法はありますか?

私が言ったように、速度の増加は精度を少し失うかもしれません。

4

3 に答える 3

5

documentationによると、@mtrwの回答を拡張するために、これらの条件のいずれかが発生するとトレーニングが停止します。

  • エポックの最大数に達しました:net.trainParam.epochs
  • 最大時間を超過しました:net.trainParam.time
  • パフォーマンスは目標に合わせて最小化されます:net.trainParam.goal
  • パフォーマンスの勾配はmin_gradを下回ります:net.trainParam.min_grad
  • mu がmu_maxを超えている:net.trainParam.mu_max
  • 検証のパフォーマンスが、最後に低下してからmax_failの回数を超えて増加しました (検証を使用している場合):net.trainParam.max_fail

エポック時間の制約により、トレーニング期間に上限を設けることができます。

目標の制約は、パフォーマンス (エラー) がそれを下回ったときにトレーニングを停止し、通常は時間/精度のトレードオフのレベルを調整できます: 精度の低い結果が実行を高速化します。

これは、勾配の大きさが min_grad より小さい場合、トレーニングが停止するという点で、min_grad (勾配は「降下」の強さを示します) に似ています。誤差関数があまり変化していない場合は、プラトーに達しており、あまり改善しないため、おそらくトレーニングを停止する必要があるという事実から理解できます。

mumu_dec、およびmu_maxは、重み更新プロセス (バックプロパゲーション) を制御するために使用されます。

max_failは通常、オーバーフィッティングを避けるために使用されますが、スピードアップにはあまり使用されません。

私のアドバイスは、時間エポックをアプリケーションの制約が許す限り最大限に設定することです (そうしないと、結果が悪くなります)。また、 goalmin_gradを制御して、必要な速度/精度のトレードオフのレベルに到達することができます。max_failsは主に優れた汎化能力を確保するために使用されるため、時間の節約にはならないことに注意してください。

于 2009-11-14T21:10:58.130 に答える
1

(免責事項: 私はニューラル ネットワーク ツールボックスを持っていないので、Mathworks のドキュメントから推定しているだけです)

TRAINLMを使用しているように、入力パラメータから見えます。ドキュメントによると、net.trainParam.max_failパラメーターを設定して検証チェックを変更できます。

初期mu値と増減係数を設定できます。ただし、これには、予想される回答と検索のパフォーマンスに関する洞察が必要です。

より率直なアプローチとして、net.trainParam.epochsパラメーターをデフォルトの 100 未満に設定することで、反復の最大回数を制御することもできます。またnet.trainParam.time、秒数を制限するようにパラメーターを設定することもできます。

おそらく、すべての表示をスキップするように設定net.trainParam.showする必要があります。NaN

于 2009-11-14T19:52:03.827 に答える
0

ニューラル ネットは、MATLAB ではオブジェクトとして扱われます。.トレーニングの前 (または後) に任意のパラメーターにアクセスするには、オペレーターを使用してネットワークのプロパティにアクセスする必要があります。

mtrw と Amro の回答に加えて、MATLAB の Neural Network Toolbox ドキュメンテーションを新しい親友にしてください。それは通常、物事をより詳細に説明します。

于 2009-11-14T21:16:35.543 に答える