QGAN¶
- class QGAN(data, bounds=None, num_qubits=None, batch_size=500, num_epochs=3000, seed=7, discriminator=None, generator=None, tol_rel_ent=None, snapshot_dir=None, quantum_instance=None, penalty=False)[source]¶
Bases:
object
The Quantum Generative Adversarial Network algorithm.
The qGAN [1] is a hybrid quantum-classical algorithm used for generative modeling tasks.
This adaptive algorithm uses the interplay of a generative
GenerativeNetwork
and a discriminativeDiscriminativeNetwork
network to learn the probability distribution underlying given training data.These networks are trained in alternating optimization steps, where the discriminator tries to differentiate between training data samples and data samples from the generator and the generator aims at generating samples which the discriminator classifies as training data samples. Eventually, the quantum generator learns the training data’s underlying probability distribution. The trained quantum generator loads a quantum state which is a model of the target distribution.
References:
- [1] Zoufal et al.,
Quantum Generative Adversarial Networks for learning and loading random distributions
- Parameters:
bounds (ndarray | List | None) – k min/max data values [[min_0,max_0],…,[min_k-1,max_k-1]] if univariate data: [min_0,max_0]
num_qubits (ndarray | List | None) – k numbers of qubits to determine representation resolution, i.e. n qubits enable the representation of 2**n values [num_qubits_0,…, num_qubits_k-1]
batch_size (int) – Batch size, has a min. value of 1.
num_epochs (int) – Number of training epochs
seed (int) – Random number seed
discriminator (DiscriminativeNetwork | None) – Discriminates between real and fake data samples
generator (GenerativeNetwork | None) – Generates ‘fake’ data samples
tol_rel_ent (float | None) – Set tolerance level for relative entropy. If the training achieves relative entropy equal or lower than tolerance it finishes.
snapshot_dir (str | None) – Directory in to which to store cvs file with parameters, if None (default) then no cvs file is created.
quantum_instance (Backend | QuantumInstance | None) – Quantum Instance or Backend
penalty (bool | None) – enable or not the gradient penalty in the discriminator
- Raises:
QiskitMachineLearningError – invalid input
Attributes
Returns backend.
Returns discriminator loss
Returns discriminator
Returns generator loss
Returns generator
Returns penalty parameter for the discriminator training
Returns quantum instance.
Return a numpy random.
Returns relative entropy between target and trained distribution
Returns random seed
Returns tolerance for relative entropy
Methods
Get relative entropy between target and trained distribution
run
([quantum_instance])Execute the algorithm with selected backend.
set_backend
(backend, **kwargs)Sets backend with configuration.
set_discriminator
([discriminator])Initialize discriminator.
set_generator
([generator_circuit, ...])Initialize generator.
train
()Train the qGAN