NetKet
NetKet is an open-source project delivering cutting-edge methods for the study of many-body quantum systems with artificial neural networks and machine learning techniques.
Major Features
-
Graphs
- Built-in Graphs
- Hypercube
- Custom Graphs
- Any Graph With Given Adjacency Matrix [from input file]
- Any Graph With Given Edges [from input file]
- Symmetries
- Automorphisms: pre-computed in built-in graphs, available through iGraph for custom graphs
- Built-in Graphs
-
Hamiltonians
- Built-in Hamiltonians
- Transverse-field Ising
- Heisenberg
- Bose-Hubbard
- Custom Hamiltonians
- General k-local Hamiltonians defined on Graphs
- Any k-local Hamiltonian [from input file]
- Built-in Hamiltonians
-
Ground State Solvers
- Stochastic Learning Methods
- Gradient Descent
- Stochastic Reconfiguration Method
- Direct Solver
- Iterative Solver for Large Number of Parameters
- Exact Diagonalization
- Full Solver
- Lanczos Solver
- Imaginary-Time Dynamics
- Stochastic Learning Methods
-
Optimizers
- Stochastic Gradient Descent
- AdaMax, AdaDelta, AdaGrad, AMSGrad
- RMSProp
- Momentum
- Gradient Clipping
-
Machines
- Restricted Boltzmann Machines
- Standard
- For Custom Local Hilbert Spaces
- With Permutation Symmetry Using Graph Isomorphisms
- Feed-Forward Networks
- For Custom Local Hilbert Spaces
- Fully connected layer
- Convnet layer for arbitrary underlying graph
- Any Layer Satisfying Prototypes in
AbstractLayer
[extending C++ code]
- Jastrow wavefunction
- Standard
- With Permutation Symmetry Using Graph Isomorphisms
- Custom Machines
- Any Machine Satisfying Prototypes in
AbstractMachine
[extending C++ code]
- Any Machine Satisfying Prototypes in
- Restricted Boltzmann Machines
-
Observables
- Custom Observables
- Any k-local Operator [from input file]
- Custom Observables
-
Sampling
- Local Metropolis Moves
- Local Hilbert Space Sampling
- Parallel Tempering Versions
- Hamiltonian Moves
- Automatic Moves with Hamiltonian Symmetry
- Parallel Tempering Versions
- Custom Sampling
- Any k-local Stochastic Operator can be used to do Metropolis Sampling
- Local Metropolis Moves
-
Statistics
- Automatic Estimate of Correlation Times
-
I/O
- Python/JSON Interface
Installation and Usage
Please visit our homepage for further information.