Skip to content

Releases: dwavesystems/dwave-pytorch-plugin

0.3.1

27 Jan 04:53
c207935

Choose a tag to compare

Other Notes

  • Rename the crayon argument in BlockSampler to colouring.

0.3.0

26 Jan 20:11
f976f42

Choose a tag to compare

New Features

  • Add a MaximumMeanDiscrepancyLoss in dwave.plugins.torch.nn.loss for estimating the squared maximum mean discrepancy (MMD) for a given kernel and two samples. Its functional counterpart maximum_mean_discrepancy_loss is in dwave.plugins.torch.nn.functional. Kernels reside in dwave.plugins.torch.nn.modules.kernels. This enables, for example, training discrete autoencoders to match the distribution of a target distribution (e.g., prior). See #35.

  • Add the Python module dwave.plugins.torch.nn containing commonly-used neural network modules and patterns used to build more complex architectures. See #33.

  • Add LinearBlock and SkipLinear modules. See #33.

  • Add utilities for testing torch modules added to the nn Python submodule. See #33.

  • Add a samplers submodule with a baseclass TorchSampler. See #58.

  • Add a new PyTorch plugin wrapper for a dimod sampler named DimodSampler. See #58.

  • Add BlockSampler for performing block Gibbs (or Metropolis) sampling of graph-restricted Boltzmann Machines. See #44.

  • Add functions for converting spins to bits and bits to spins. See #44.

  • Add randspin for generating random spins. See #44.

  • Add support for Python 3.14. See #49.

Upgrade Notes

  • Update BlockSampler to inherit from the new TorchSampler. See #58.

  • BlockSampler.to() now returns a copy with components moved to the set device, instead of performing the device change it in-place. See #58.

  • dwave.plugins.torch.models.losses.kl_divergence.pseudo_kl_divergence_loss no longer uses the Graph-Restricted Boltzmann Machine to generate Boltzmann samples internally. Instead, the samples must be provided as an argument to the function. This is a breaking change. See #34.

  • Drop support for Python 3.9. See #49.

Deprecation Notes

  • Deprecate GraphRestrictedBoltzmannMachine.sample() and GraphRestrictedBoltzmannMachine.sampleset_to_tensor in favour of the new dwave.plugins.torch.samplers module. Will be removed in version 0.4.0." See #58.

Bug Fixes

  • The default latent_to_discrete transformation in dwave.plugins.torch.models.discrete_variational_autoencoder.DiscreteVariationalAutoencoder has been fixed to accommodate arbitrary encoders. Before, the default transformation only allowed encoders whose output shape was (B, l). Now, encoders can have an arbitrary number of feature dimensions, i.e., the shape can be (B, l1, l2, ...). See #26.

  • Fix the (automatic) gradient computation when hidden units are present. The issue was that the parameters, linear and quadratic weights, were used in the marginalization without being detached from the computation graph. The fix was to detach the parameters when computing effective fields. See #29.

  • Fix the concatenation of statistics in GraphRestrictedBoltzmannMachine.sufficient_statistics. The issue was the concatenation of statistics were hard-coded at dimension 1 when it should have been the final dimension (to reflect that of GraphRestrictedBoltzmannMachine.interactions). See #42.

0.2.0

01 Aug 23:45
d3f2989

Choose a tag to compare

New Features

  • Support custom weight initialization and setting. See #18.

  • Add DiscreteVariationalAutoencoder class for training discrete models as priors. See #8

  • Add pseudo KL divergence loss function for use with Discrete Variational Autoencoder. See #8.

  • Support hidden units. See #7.

Upgrade Notes

  • Decouple sampling parameters (beta) from the model. See #14.

  • Reduce number of operations in the GRBM objective function. See #14.

  • Remove networkx dependency. See #14.

  • Simplify GraphRestrictedBoltzmannMachine constructor to require only node and edge lists. See #14.

  • Add option to return samples as dimod.Sampleset from GraphRestrictedBoltzmannMachine.sample(). See #23.

Deprecation Notes

  • Simplify GraphRestrictedBoltzmannMachine constructor to require only node and edge lists. See #14.

  • Remove abstract base class. See #14.

Bug Fixes

  • Make GraphRestrictedBoltzmannMachine.quasi_objective's argument kind optional. See #18.

Other Notes

  • Add a directory for models and move boltzmann_machine.py from dwave/plugins/torch/ to dwave/plugins/torch/models/. See #24.

0.1.0

27 Mar 21:30

Choose a tag to compare

Prelude

  • Initial release of dwave-pytorch-plugin.