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:
- Do you want a binarised version of
RBMMultiVal
? - Do you prefer to have a one-hot encoding
NDMMultiVal
?