Is there a way to save and recover a trained Neural Network in PyBrain, so that I don't have to retrain it each time I run the script?
PyBrain's Neural Networks can be saved and loaded using either python's built in pickle/cPickle module, or by using PyBrain's 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)
Note cPickle is implemented in C, and therefore should be much faster than pickle. Usage should mostly be the same as pickle, so just import and use cPickle instead.
# 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')
The NetworkWriter
and NetworkReader
work great. I noticed that upon saving and loading via pickle
, that the network is no longer changeable via training-functions. Thus, I would recommend using the NetworkWriter
-method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With