Skip to content

implement nn.binary_encoding

Created by: VolodyaCO

This PR introduces the NDM model for Hilbert spaces with arbitrary local sizes. Say, for instance, that the Hilbert space is that of a two-level system and a three-level system, i.e. [2, 3]. The NDM naturally accepts binary occupations, and it is not ok to input non-binary occupations to the NDM. For this reason, a configuration [1, 2]should not be passed to the NDM. Instead, this PR proposes to pass a binarised configuration [1, 1, 0].

This way of converting configurations of arbitrary local size Hilbert spaces is compact, as it does not use one-hot encoding (as RBMMultiVal does). Having this compact representation has the cost that the NDM needs to learn the correlations between all the bits that correspond to the same occupation number. In the example above [1, 1, 0] is split into [1], which represents the state of the two-level system, and [1,0], which represents the state of the three-level system.

I'd like to get some feedback as to how useful this would be. Particularly:

  1. Do you want a binarised version of RBMMultiVal?
  2. Do you prefer to have a one-hot encoding NDMMultiVal?

Merge request reports