Saving and Loading Models¶
Models and modules can be saved to a file or serialized to JSON-safe strings.
Saving a model to disk¶
The easiest way to save a ProbFlow Model (this will also work for a Module
object) is to use the save
method:
# ...
# model.fit(...)
model.save('my_model.pfm')
# Or, use pf.save, which does the same thing
# pf.save(model, 'my_model.pfm')
Then the file can be loaded with pf.load
model = pf.load('my_model.pfm')
# model is a pf.Model object
Note that the file extension doesn’t matter - i.e. it doesn’t have to be
.pfm
, that’s just for “ProbFlow Model” (to give it an air of legitimacy
haha). You could just as easily use .pkl
, or .dat
or whatever.
Saving and loading only works between identical Python versions
Currently, you can only load a ProbFlow model or module file using the exact same version of Python as was used to save it. This is because ProbFlow uses cloudpickle to serialize objects. Fancier/better storage might be supported in the future, but don’t hold your breath!
Serializing a model to a JSON-safe string¶
Models and modules can also be serialized into JSON-safe strings. To do this,
use the dumps
method of Model and
Module
model_str = model.dumps()
# Or, use pf.dumps, which does the same thing
# model_str = pf.dumps(model)
These are UTF-8 encoded strings, so they’re JSON-safe. That is, you can do this:
import json
json.dumps({"model": model.dumps()})
Then the model can be loaded back from the string with
pf.loads
model = pf.loads(model_str)
# model is a pf.Model object