Как я могу рассчитать или контролировать обучение нейронной сети в Pybrain? - PullRequest
9 голосов
/ 04 февраля 2012

У меня есть нейронная сеть n pybrain, с двумя входами, скрытым слоем и выходным слоем. Я использую следующее для обучения:

trainer = BackpropTrainer(net,ds)
trainer.trainUntilConvergence()

net - это нейронная сеть, а ds - данные поезда.

Мой вопрос заключается в том, можно ли и как рассчитать время, необходимое для завершения обучения, или как я могу отслеживать ход обучения. Спасибо.

Ответы [ 2 ]

10 голосов
/ 19 февраля 2012

Вы всегда можете подкласс BackpropTrainer (исходный код здесь ) и переопределить trainUntilConvergence, если используется maxEpochs, отследить процент полноты, используя соотношение между эпохами и эпохами.

Если не использовать maxEpochs, вы всегда можете сделать обоснованное предположение о количестве оставшихся эпох на основе средней скорости изменения ошибок проверки и размера continueEpochs. Или просто изучите скорость изменения ошибок валидации. Если вы хотите отобразить эпохи по времени, вам придется профилировать время каждой эпохи и сохранять их.

2 голосов
/ 18 мая 2015

Ничего не добавить к предыдущему комментарию, кроме кода, который я использую для него:

maxepochs=20
results=[]
for i in range(len(maxepochs)):
    aux = trainer.train()
    results.extend(aux)
    plt.figure()
    plt.scatter(range(len(results[0])),results[0])
    plt.draw()

Вы получите новый сюжет на каждом цикле. Не очень приятно, но у меня работает.

Надеюсь, я помогу тебе

...