У меня есть следующий код из учебника 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 подразумевает, что сеть возвращается, которая лучше всего обучена, однако возвращает Tuple ошибок.
Когда etting continueEpochs в 0, я получаю сообщение об ошибке (ValueError: max() arg - пустая последовательность), поэтому continueEpochs должен быть больше 0.
Действительно ли PyBrain поддерживается, потому что кажется, что существует большая разница в документации и коде.