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.readFunction
Base.read(file::AbstractString, ::Type{C}) where C <: ProbCircuit

Reads circuit from file; uses extension to detect format type, for example ".psdd" for PSDDs.

source
Base.writeFunction
Base.write(file::AbstractString, circuit::ProbCircuit)

Writes circuit to file; uses file name extention to detect file format.

source
Base.write(files::Tuple{AbstractString,AbstractString}, circuit::StructProbCircuit)

Saves circuit and vtree to file.

source

Learning Circuits

ProbabilisticCircuits.estimate_parameters!Function
estimate_parameters!(pc::ProbCircuit, data; pseudocount::Float64, entropy_reg::Float64 = 0.0)

Maximum likelihood estimation of a ProbCircuit's parameters given data

source
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.

source
ProbabilisticCircuits.estimate_parameters_em!Function
estimate_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 Regularization
  • update_per_batch: Whether to update circuit paramters per batch (using the ParamBitCircuit's paramters)
source
ProbabilisticCircuits.estimate_parameters_em_multi_epochs!Function
estimate_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 this to_gpu(train_data).

Keyword arguments:

  • valid_data=nothing: validation data, should be same device as train_data
  • test_data=nothing: test data, data, should be same device as train_data
  • entropy_reg::Float64 = 0.0: Entropy regularization
  • exp_update_factor_start::Float64 = 0.1:
  • exp_update_factor_end::Float64 = 0.9:
  • em_warmup_iters=100 : number of EM Warm up iterations
  • em_finetune_iters=100: number of EM fine tune iterations
  • verbose=false: verbose or not
  • verbose_log_rate=1: how often to print info
  • save_path=nothing: path of the file to save the partially trained circuit
  • save_rate=20: how often to save the circuit to file
source

Circuit Queries

ProbabilisticCircuits.marginalFunction
marginal(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.

source
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.
source
ProbabilisticCircuits.max_a_posterioriFunction
max_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).

source
ProbabilisticCircuits.sampleFunction
sample(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).

source

Compilation