API¶
The ProbFlow API consists of four primary modules:
as well as a module which contains pre-built models for standard tasks:
and two other modules which allow for customization of the training process:
The distributions
module contains classes to instantiate probability
distributions, which describe the likelihood of either a parameter or a
datapoint taking any given value. Distribution objects are used to represent
the predicted probability distribution of the data, and also the parameters’
posteriors and priors.
The parameters
module contains classes to instantiate parameters,
which are values that characterize the behavior of a model. When fitting a
model, we want to find the values of the parameters which best allow the model
to explain the data. However, with Bayesian modeling we want not only to find
the single best value for each parameter, but a probability distribution which
describes how likely any given value of a parameter is to be the best or true
value.
The modules
module contains the Module
abstract base class.
Modules are building blocks which can be used to create probabilistic models.
They can contain parameters, other information, and even other Modules. They
take Tensor(s) as input, perform some computation them, and output a Tensor.
A good example of a Module is a neural network layer, because it needs to
contain parameters (the weights and biases), and it takes one Tensor as input
and outputs a different Tensor. The modules
module also contains
several specific types of Modules, such as a Dense
neural network
layer, a BatchNormalization
layer and an Embedding
layer.
The models
module contains abstract base classes for Models. Unlike
Modules, Models encapsulate an entire probabilistic model: they take Tensor(s)
as input and output a probability distribution. Like Modules, they can
contain Parameters and Modules. They can be fit to data, and have many
methods for inspecting the quality of the fit.
The applications
module contains pre-built models for standard
applications (e.g. linear regression, logistic regression, and multilayer
dense neural networks) which are ready to be fit.
The callbacks
module contains the Callback
abstract base
class, and several specific types of callbacks which can be used to control
the training process, record metrics or parameter values over the course of
training, stop training early, etc.
The data
module contains the DataGenerator
class,
which can be used to feed data during training when the dataset is too large
to fit into memory.
The utils
module contains various utilities, generally not intended to
be used by users, such as abstract base classes, casting functions, settings,
etc.