PyBrain チュートリアルの次のコードがあります。
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure.modules import TanhLayer
ds = SupervisedDataSet(2, 1)
ds.addSample((0,0), (0,))
ds.addSample((0,1), (1,))
ds.addSample((1,0), (1,))
ds.addSample((1,1), (0,))
net = buildNetwork(2, 3, 1, bias=True, hiddenclass=TanhLayer)
trainer = BackpropTrainer(net, ds)
for inp, tar in ds:
print [net.activate(inp), tar]
errors = trainer.trainUntilConvergence()
for inp, tar in ds:
print [net.activate(inp), tar]
ただし、結果として、十分にトレーニングされていないニューラル ネットワークが作成されます。エラー出力を見ると、ネットワークは適切にトレーニングされていますが、「continueEpochs」引数を使用してさらにトレーニングを行っているため、ネットワークのパフォーマンスが再び低下しています。したがって、ネットワークは収束していますが、最適なトレーニング済みネットワークを取得する方法はありません。PyBrain のドキュメントは、最適にトレーニングされたネットワークが返されることを暗示していますが、エラーのタプルを返します。
continueEpochs を 0 に設定するとエラー (ValueError: max() arg は空のシーケンス) が発生するため、continueEpochs は 0 よりも大きくする必要があります。
ドキュメントとコードに大きな違いがあるように見えるため、PyBrain は実際に維持されていますか。