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.