Как сохранить и восстановить обучение PyBrain? - PullRequest
33 голосов
/ 15 мая 2011

Есть ли способ сохранить и восстановить обученную нейронную сеть в PyBrain, чтобы мне не приходилось переучивать ее каждый раз при запуске сценария?

Ответы [ 3 ]

45 голосов
/ 15 мая 2011

Нейронные сети PyBrain могут быть сохранены и загружены с помощью встроенного в Python модуля pickle / cPickle или с помощью PyBrain XML NetworkWriter.

# Using pickle

from pybrain.tools.shortcuts import buildNetwork
import pickle

net = buildNetwork(2,4,1)

fileObject = open('filename', 'w')

pickle.dump(net, fileObject)

fileObject.close()

fileObject = open('filename','r')
net = pickle.load(fileObject)

Примечание cPickle реализован в C, и поэтому должен быть намного быстреечем мариновать.Использование в основном должно быть таким же, как и для pickle, поэтому просто импортируйте и используйте вместо него cPickle.

# Using NetworkWriter

from pybrain.tools.shortcuts import buildNetwork
from pybrain.tools.customxml.networkwriter import NetworkWriter
from pybrain.tools.customxml.networkreader import NetworkReader

net = buildNetwork(2,4,1)

NetworkWriter.writeToFile(net, 'filename.xml')
net = NetworkReader.readFrom('filename.xml') 
11 голосов
/ 28 ноября 2013

NetworkWriter и NetworkReader прекрасно работают.Я заметил, что после сохранения и загрузки через pickle сеть больше не может изменяться с помощью функций обучения.Таким образом, я бы рекомендовал использовать NetworkWriter -метод.

2 голосов
/ 07 ноября 2015

NetworkWriter это путь.Используя Pickle, вы не можете переобучить сеть, как говорит Йорг.

Вам нужно что-то вроде этого:

from pybrain.tools.shortcuts import buildNetwork
from pybrain.tools.customxml import NetworkWriter
from pybrain.tools.customxml import NetworkReader

net = buildNetwork(4,6,1)

NetworkWriter.writeToFile(net, 'filename.xml')
net = NetworkReader.readFrom('filename.xml')
...