Есть ли способ сохранить и восстановить обученную нейронную сеть в 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')
person
solartic
schedule
15.05.2011
Из отзыва: Пакет xml был переименован в сентябре 2010 г.:
- person SiHa; 03.11.2016
NetworkWriter
и NetworkReader
отлично работают. Я заметил, что при сохранении и загрузке через pickle
сеть больше не меняется через обучающие функции. Таким образом, я бы рекомендовал использовать NetworkWriter
-метод.
person
Jorg
schedule
28.11.2013
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')
person
Roberto Alcantara
schedule
07.11.2015