You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
New Features
Add an Ising layer for performing quantum annealing-based neural
network computations. Its backpropagation is computed, or
approximated, using sample covariance.
Add statistic base class for untrainable statistics, e.g., sufficient
statistics of Ising models.
Add a static affine module. It is static in the sense that there are
no trainable parameters.
Allow hidden units to be connected during GraphRestrictedBoltzmannMachine
construction.
Add BipartiteGibbsSampler for performing Gibbs sampling of bipartite
graph-restricted Boltzmann Machines.
Add conditional sampling functionality for the BlockSampler.
Upgrade Notes
Add .clone() to the return of BlockSampler.sample to prevent
unintended in-place modification of the sampler's internal state due
to returning a reference to the underlying tensor.
Add conditional sampling functionality for the DimodSampler.
Initialize GraphRestrictedBoltzmannMachine weights using Gaussian
random variables with graph-connectivity-dependent standard
deviations. For an edge $(u, v)$, the default standard deviation is $2.5 / (\deg(u)\deg(v))^{1/4}$. The weight-initialization strategy is
grounded in Hinton's practical guide for RBM training, which
recommends sampling weights from a Gaussian distribution with mean 0
and standard deviation 0.01 (for zero-one-valued RBMs). The
connectivity scaling keeps the energy functional extensive on sparse
graphs, while the temperature factor initializes the GRBM deep in a
paramagnetic regime for QPU-backed sampling, consistent with the Sherrington-Kirkpatrick model.
Bug Fixes
The Gaussian kernel incorrectly computed pairwise distances with l2
norm without squaring it. This fixes the bug by squaring the l2 norm.
GraphRestrictedBoltzmannMachines should not be allowed to be defined
with self-loops. Presence of self-loops is now checked at construction
time.
Raise a ValueError when GraphRestrictedBoltzmannMachine.set_quadratic
receives an edge that is not in the model. Previously, an unknown edge
overwrote every quadratic bias.