quimb.tensor.belief_propagation.l1bp¶
Classes¶
Lazy 1-norm belief propagation. BP is run between groups of tensors |
Functions¶
|
Estimate the contraction of |
Module Contents¶
- class quimb.tensor.belief_propagation.l1bp.L1BP(tn, site_tags=None, *, damping=0.0, diis=False, update='sequential', sweep_order='auto', normalize=None, distance=None, local_convergence=True, optimize='auto-hq', message_init_function=None, contract_every=None, inplace=False, **contract_opts)¶
Bases:
quimb.tensor.belief_propagation.bp_common.BeliefPropagationCommonLazy 1-norm belief propagation. BP is run between groups of tensors defined by
site_tags. The message updates are lazy contractions.- Parameters:
tn (TensorNetwork) – The tensor network to run BP on.
site_tags (sequence of str, optional) – Tags for sites in
tn. Each tag should select a region, and regions must not overlap. Infer tags for structured networks.damping (float or callable, optional) – Mix old and new messages as
damping * old + (1 - damping) * new. This can make convergence more reliable but slower.diis (bool or dict, optional) – Use direct inversion in the iterative subspace (DIIS) to estimate messages with lower error. A dict can contain DIIS options:
max_history,beta,rcond.update ({'sequential', 'parallel'}, optional) – With ‘sequential’, use new messages in later updates of the same sweep. With ‘parallel’, use only messages from the previous sweep. Sequential updates usually help convergence. Parallel updates can converge to different solutions.
sweep_order ({'auto', 'alternate', 'fixed', None}, optional) – Sequential update order. Use ‘alternate’ to reverse each sweep, starting reversed, or ‘fixed’ to keep the same order. With ‘auto’, alternate on graphs with no loops, else use a fixed order. With None, use reverse insertion order. See
SweepScheduler.normalize ({'L1', 'L2', 'L2phased', 'Linf', callable}, optional) – Norm to use after each update. With None, choose automatically. Callables should take a message and return its normalized form. ‘L2phased’ also normalizes the phase, and is the default for complex dtypes.
distance ({'L1', 'L2', 'L2phased', 'Linf', 'cosine', callable}, optional) – Distance between messages to check convergence. With None, choose automatically. Callables should take two messages and return their distance. ‘L2phased’ normalizes their phases before computing the L2 distance. It is the default for complex dtypes when normalization does not already fix the phase.
local_convergence (bool, optional) – Stop updating messages whose input messages have converged.
optimize (str or PathOptimizer, optional) – The path optimizer to use when contracting the messages.
contract_every (int, optional) – If not None, ‘contract’ (via BP) the tensor network every
contract_everyiterations. The resulting values are stored inzvalsat corresponding pointszval_its.inplace (bool, optional) – Whether to perform any operations inplace on the input tensor network.
contract_opts – Other options supplied to
cotengra.array_contract.
- local_convergence = True¶
- optimize = 'auto-hq'¶
- contract_opts¶
- sweeper¶
- messages¶
- contraction_tns¶
- iterate(tol=5e-06)¶
Perform one round of message passing.
- contract(strip_exponent=False, check_zero=True, **kwargs)¶
Contract the target tensor network via lazy belief propagation using the current messages.
- normalize_message_pairs()¶
Normalize all messages such that for each bond <m_i|m_j> = 1 and <m_i|m_i> = <m_j|m_j> (but in general != 1).
- quimb.tensor.belief_propagation.l1bp.contract_l1bp(tn, max_iterations=1000, tol=5e-06, site_tags=None, damping=0.0, update='sequential', diis=False, local_convergence=True, optimize='auto-hq', strip_exponent=False, info=None, progbar=False, **contract_opts)¶
Estimate the contraction of
tnusing lazy 1-norm belief propagation.- Parameters:
tn (TensorNetwork) – The tensor network to contract.
max_iterations (int, optional) – The maximum number of iterations to perform.
tol (float, optional) – The convergence tolerance for messages.
site_tags (sequence of str, optional) – The tags identifying the sites in
tn, each tag forms a region. If the tensor network is structured, then these are inferred automatically.damping (float, optional) – The damping parameter to use, defaults to no damping.
update ({'parallel', 'sequential'}, optional) – Whether to update all messages in parallel or sequentially.
local_convergence (bool, optional) – Stop updating messages whose input messages have converged.
optimize (str or PathOptimizer, optional) – The path optimizer to use when contracting the messages.
progbar (bool, optional) – Whether to show a progress bar.
strip_exponent (bool, optional) – Whether to strip the exponent from the final result. If
Truethen the returned result is(mantissa, exponent).info (dict, optional) – If specified, update this dictionary with information about the belief propagation run.
contract_opts – Other options supplied to
cotengra.array_contract.