Как сохранить и восстановить обучение PyBrain?
Есть ли способ сохранить и восстановить обученную нейронную сеть в PyBrain, чтобы мне не приходилось переучивать ее каждый раз, когда я запускаю скрипт?
3 ответа
Нейронные сети 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. Использование в основном должно быть таким же, как и для 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')
NetworkWriter
а также NetworkReader
отлично работает Я заметил, что при сохранении и загрузке через pickle
что сеть больше не может быть изменена с помощью функций обучения. Таким образом, я бы рекомендовал использовать NetworkWriter
-метод.
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')