pybrain でANNを構築する方法を読んでいる間、彼らは言います:
いくつかのエポックのネットワークを訓練します。通常、ここでは5のような値を設定しますが、
trainer.trainEpochs( 1 )
その意味を探してから、データのエポックを使用して重みを更新すると結論付けました.5つのエポックでデータをトレーニングすることを選択した場合、データセットは5つのサブセットに分割され、ワイトは更新されます最大5倍。
私は、各サンプルデータまたは特徴ベクトルの後にワイトが更新されるオンライントレーニングに精通しています。私の質問は、5つのエポックでモデルを構築し、おそらく重みを設定するのに十分であることを確認する方法ですか?オンライントレーニングでこの方法の利点は何ですか?また、「エポック」という用語はオンライントレーニングで使用されますが、1つの特徴ベクトルを意味しますか?
1エポックは、トレーニングセットのoneフルトレーニングサイクルで構成されます。セット内のすべてのサンプルが表示されたら、もう一度開始します-2番目のエポックの開始をマークします。
これは、バッチまたはオンライントレーニング自体とは関係ありません。バッチとは、エポックの最後にonceを更新することを意味します(everyサンプルが表示された後、つまり(= Epoch更新)およびeachsample(#samples * #Epoch更新)後に更新するオンライン。
データごとに異なるため、収束に5エポックまたは500で十分かどうかはわかりません。エラーが収束するか、特定のしきい値を下回ると、トレーニングを停止できます。これは、過剰適合を防止する領域にもなります。 早期停止 および 交差検証 を参照してください。
このスレッドを再アクティブ化してすみません。ニューラルネットは初めてで、「ミニバッチ」トレーニングの影響を調査しています。
これまでのところ、私が理解しているように、エポック( runDOSrunが言っているように )は、TrainingSet(DataSetではありません。DataSet= TrainingSet + ValidationSet)のすべての使用です。ミニバッチトレーニングでは、TrainingSetを小さなセットにサブ分割し、エポック内でウェイトを更新できます。 「うまくいけば」、これはネットワークを「収束」させます。
ニューラルネットワークの一部の定義は時代遅れであり、再定義する必要があると思います。