33

有没有办法在 PyBrain 中保存和恢复经过训练的神经网络,这样我每次运行脚本时都不必重新训练它?

4

3 回答 3

45

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') 
于 2011-05-15T14:39:30.770 回答
11

NetworkWriter工作NetworkReader得很好。我注意到,在通过 保存和加载时pickle,网络不再可以通过训练功能进行更改。因此,我建议使用NetworkWriter- 方法。

于 2013-11-28T14:44:04.533 回答
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')
于 2015-11-07T18:33:55.823 回答