Public APIs
This page lists documentation for the most commonly used public APIs of ProbabilisticCircuits.jl
. Visit the internals section for a auto generated documentation for more public API and internal APIs.
Circuit IO
Base.read
— FunctionBase.read(file::AbstractString, ::Type{C}) where C <: ProbCircuit
Reads circuit from file; uses extension to detect format type, for example ".psdd" for PSDDs.
Base.write
— FunctionBase.write(file::AbstractString, circuit::ProbCircuit)
Writes circuit to file; uses file name extention to detect file format.
Base.write(files::Tuple{AbstractString,AbstractString}, circuit::StructProbCircuit)
Saves circuit and vtree to file.
Learning Circuits
ProbabilisticCircuits.learn_circuit
— FunctionLearn structure of a single structured decomposable circuit
ProbabilisticCircuits.learn_strudel
— Functionlearn_strudel(train_x; num_mix = 5, init_maxiter = 10, em_maxiter=20)
Learn a mixture of circuits See "Strudel: Learning Structured-Decomposable Probabilistic Circuits. arxiv.org/abs/2007.09331
ProbabilisticCircuits.estimate_parameters!
— Functionestimate_parameters!(pc::ProbCircuit, data; pseudocount::Float64, entropy_reg::Float64 = 0.0)
Maximum likelihood estimation of a ProbCircuit
's parameters given data
estimate_parameters!(spc::SharedProbCircuit, data; pseudocount::Float64, entropy_reg::Float64 = 0.0)
Maximum likelihood estimation of a SharedProbCircuit's parameters given data.
bagging support: If spc
is a SharedProbCircuit and data is an array of DataFrames with the same number of "components", learn each circuit with its corresponding dataset.
ProbabilisticCircuits.estimate_parameters_em!
— Functionestimate_parameters_em!(pc::ProbCircuit, data; pseudocount::Float64, entropy_reg::Float64 = 0.0, exp_update_factor::Float64 = 0.0, update_per_batch::Bool = false)
One epoch of Expectation maximization (EM) parameter learning for circuits. Useful when having missing data or non-deterministic circuits.
entropy_reg
: Entropy Regularizationupdate_per_batch
: Whether to update circuit paramters per batch (using the ParamBitCircuit's paramters)
ProbabilisticCircuits.estimate_parameters_em_multi_epochs!
— Functionestimate_parameters_em_multi_epochs!(circuit::ProbCircuit, train_data)
Runs multiple epochs of EM for circuit. It will run on CPU/GPU based on where train_data is.
Arguments:
circuit
:train_data
: training data. If want gpu, move to gpu before calling thisto_gpu(train_data)
.
Keyword arguments:
valid_data=nothing
: validation data, should be same device astrain_data
test_data=nothing
: test data, data, should be same device astrain_data
entropy_reg::Float64 = 0.0
: Entropy regularizationexp_update_factor_start::Float64 = 0.1
:exp_update_factor_end::Float64 = 0.9
:em_warmup_iters=100
: number of EM Warm up iterationsem_finetune_iters=100
: number of EM fine tune iterationsverbose=false
: verbose or notverbose_log_rate=1
: how often to print infosave_path=nothing
: path of the file to save the partially trained circuitsave_rate=20
: how often to save the circuit to file
ProbabilisticCircuits.learn_chow_liu_tree_circuit
— FunctionLearning from data a structured-decomposable circuit with several structure learning algorithms
Circuit Queries
ProbabilisticCircuits.marginal
— Functionmarginal(root::ProbCircuit, data::Union{Real,Missing}...)
marginal(root::ProbCircuit, data::Union{Vector{Union{Bool,Missing}},CuVector{UInt8}})
marginal(circuit::ProbCircuit, data::DataFrame)
marginal(circuit::ParamBitCircuit, data::DataFrame)::AbstractVector
marginal(circuit::SharedProbCircuit, data::DataFrame, weights::Union{AbstractArray, Nothing}; component_idx)
Evaluate marginals of the circuit bottom-up for given input(s).
Missing values should be denoted by missing
in the data.
Outputs $\log{p(x^o)}$ for each data point.
marginal(circuit::SharedProbCircuit, data::DataFrame, weights::Union{AbstractArray, Nothing} = nothing; component_idx = 0)::AbstractVector
Computes marginals for one circuit in a SharedProbCircuit
.
component_idx
: index of the SharedProbCircuit component to comptue marginals on.
ProbabilisticCircuits.max_a_posteriori
— Functionmax_a_posteriori(root::ProbCircuit, data::Union{Bool,Missing}...)
max_a_posteriori(root::ProbCircuit, data::Union{Vector{<:Union{Bool,Missing}},CuVector{UInt8}})
max_a_posteriori(circuit::ProbCircuit, data::DataFrame)
max_a_posteriori(pbc::ParamBitCircuit, data; Float=Float32)
Evaluate maximum a-posteriori state of the circuit for given input(s).
Outputs the states, and the corresponding probabilities (in log domain).
ProbabilisticCircuits.sample
— Functionsample(pc::ProbCircuit, num_samples)
sample(pc::ProbCircuit, num_samples, evidences)
Sample states from the probabilistic circuit distribution. Also can do conditional sampling if evidence is given (any subset of features).
Compilation
ProbabilisticCircuits.compile_sdd_from_clt
— FunctionCompile a psdd circuit from clt and vtree