У меня есть следующий код из учебника 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, потому что кажется, что существует большая разница в документации и коде.