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 <: ProbCircuitReads 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_datatest_data=nothing: test data, data, should be same device astrain_dataentropy_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)::AbstractVectorComputes 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