qbm.models package
Submodules
qbm.models.BQRBM module
- class qbm.models.BQRBM.BQRBM(V_train, n_hidden, A_freeze, B_freeze, beta_initial=1.0, beta_range=[0.1, 10], annealer_params=None, simulation_params=None, seed=0)
Bases:
QBMBase
Bound-based Quantum Restricted Boltzmann Machine
- property J
Ising J values. Correspond to w_ij = -β * B_freeze * J_ij
- property h
Ising h values. Correspond to b_i = -β * B_freeze * h_i
- static load(file_path, initialize_annealer=True)
Loads the BQRBM model at file_path. Necessary because of pickling issues with the qpu and sampler objects.
- Parameters:
file_path – Path to the model to load. Must be a Path object or a string with “.pkl” file extension.
initialize_annealer – If True and has attribute self.annealer_params, then will call self._initialize_annealer().
- Returns:
BQRBM instance loaded from the file path.
- sample(n_samples, answer_mode='raw', use_gauge=True, binary=False)
Generate samples using the model, either exact or from the annealer.
- Parameters:
n_samples – Number of samples to generate (num_reads param in sample_ising).
answer_mode – “raw” or “histogram”.
use_gauge – If True will use a random gauge transformation (recommended for more robust sample generation).
binary – If true will convert the state vector values from {+1, -1} to {0, 1}.
- Returns:
Dictionary (exact) or Ocean SDK SampleSet object (annealer).
- save(file_path, reinitialize_annealer=True)
Saves the BQRBM model at file_path. Necessary because of pickling issues with the qpu and sampler objects.
- Parameters:
file_path – Path to save the model to. Must be a Path object or a string with “.pkl” file extension.
reinitialize_annealer – If True and has attribute self.annealer_params, then will call self._initialize_annealer() after saving.
- train(n_epochs=100, learning_rate=0.1, learning_rate_beta=0.1, mini_batch_size=10, n_samples=10000, callback=None)
Fits the model to the training data.
- Parameters:
n_epochs – Number of epochs to train for.
learning_rate – Learning rate. If a list or array, then it will represent the learning rate over the epochs, must be of length n_epochs.
learning_rate_beta – Learning rate for the effective temperature. If a list or array, then it will represent the learning rate over the epochs, must be of length n_epochs. Note: It might be useful to use a larger learning_rate_beta in the beginning to help the model find a good temperature, then drop it after a number of epochs.
mini_batch_size – Size of the mini-batches.
n_samples – Number of samples to generate after every epoch. Used for computing β gradient, as well as the callback.
callback – A function called at the end of each epoch. It takes the arguments (model, samples), and returns a dictionary with required keys [“value”, “print”], where the “print” value is a string to be printed at the end of each epoch.
qbm.models.QBMBase module
- class qbm.models.QBMBase.QBMBase(V_train, n_hidden, seed)
Bases:
ABC
Abstract base class for Quantum Boltzmann Machines
Theory based on Quantum Boltzmann Machine by Amin et al. https://journals.aps.org/prx/abstract/10.1103/PhysRevX.8.021050
Module contents
- class qbm.models.BQRBM(V_train, n_hidden, A_freeze, B_freeze, beta_initial=1.0, beta_range=[0.1, 10], annealer_params=None, simulation_params=None, seed=0)
Bases:
QBMBase
Bound-based Quantum Restricted Boltzmann Machine
- property J
Ising J values. Correspond to w_ij = -β * B_freeze * J_ij
- property h
Ising h values. Correspond to b_i = -β * B_freeze * h_i
- static load(file_path, initialize_annealer=True)
Loads the BQRBM model at file_path. Necessary because of pickling issues with the qpu and sampler objects.
- Parameters:
file_path – Path to the model to load. Must be a Path object or a string with “.pkl” file extension.
initialize_annealer – If True and has attribute self.annealer_params, then will call self._initialize_annealer().
- Returns:
BQRBM instance loaded from the file path.
- sample(n_samples, answer_mode='raw', use_gauge=True, binary=False)
Generate samples using the model, either exact or from the annealer.
- Parameters:
n_samples – Number of samples to generate (num_reads param in sample_ising).
answer_mode – “raw” or “histogram”.
use_gauge – If True will use a random gauge transformation (recommended for more robust sample generation).
binary – If true will convert the state vector values from {+1, -1} to {0, 1}.
- Returns:
Dictionary (exact) or Ocean SDK SampleSet object (annealer).
- save(file_path, reinitialize_annealer=True)
Saves the BQRBM model at file_path. Necessary because of pickling issues with the qpu and sampler objects.
- Parameters:
file_path – Path to save the model to. Must be a Path object or a string with “.pkl” file extension.
reinitialize_annealer – If True and has attribute self.annealer_params, then will call self._initialize_annealer() after saving.
- train(n_epochs=100, learning_rate=0.1, learning_rate_beta=0.1, mini_batch_size=10, n_samples=10000, callback=None)
Fits the model to the training data.
- Parameters:
n_epochs – Number of epochs to train for.
learning_rate – Learning rate. If a list or array, then it will represent the learning rate over the epochs, must be of length n_epochs.
learning_rate_beta – Learning rate for the effective temperature. If a list or array, then it will represent the learning rate over the epochs, must be of length n_epochs. Note: It might be useful to use a larger learning_rate_beta in the beginning to help the model find a good temperature, then drop it after a number of epochs.
mini_batch_size – Size of the mini-batches.
n_samples – Number of samples to generate after every epoch. Used for computing β gradient, as well as the callback.
callback – A function called at the end of each epoch. It takes the arguments (model, samples), and returns a dictionary with required keys [“value”, “print”], where the “print” value is a string to be printed at the end of each epoch.
- class qbm.models.QBMBase(V_train, n_hidden, seed)
Bases:
ABC
Abstract base class for Quantum Boltzmann Machines
Theory based on Quantum Boltzmann Machine by Amin et al. https://journals.aps.org/prx/abstract/10.1103/PhysRevX.8.021050