quimb.tensor.belief_propagation.l1bp

Classes

L1BP

Lazy 1-norm belief propagation. BP is run between groups of tensors

Functions

contract_l1bp(tn[, max_iterations, tol, site_tags, ...])

Estimate the contraction of tn using lazy 1-norm belief propagation.

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

Lazy 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_every iterations. The resulting values are stored in zvals at corresponding points zval_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 tn using 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 True then 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.