有没有办法在PyBrain中保存和恢复经过训练的神经网络,这样我每次运行脚本时都不需要重新训练?
答案 0 :(得分:45)
可以使用python内置的pickle / cPickle模块或使用PyBrain的XML NetworkWriter来保存和加载PyBrain的神经网络。
# 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')
答案 1 :(得分:11)
NetworkWriter
和NetworkReader
效果很好。我注意到在通过pickle
保存和加载后,网络不再可以通过培训功能进行更改。因此,我建议使用NetworkWriter
- 方法。
答案 2 :(得分:2)
NetworkWriter是要走的路。使用Pickle你不能像Jorg所说的那样重新训练网络。
你需要这样的东西:
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')