Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK and does not exist in the latest version. We recommend you migrate to the latest version. See the release notes for more information.

qiskit.aqua.components.neural_networks.QuantumGenerator

class QuantumGenerator(bounds, num_qubits, generator_circuit=None, init_params=None, optimizer=None, snapshot_dir=None)

GitHub

Quantum Generator.

The quantum generator is a parametrized quantum circuit which can be trained with the QGAN algorithm to generate a quantum state which approximates the probability distribution of given training data. At the beginning of the training the parameters will be set randomly, thus, the output will is random. Throughout the training the quantum generator learns to represent the target distribution. Eventually, the trained generator can be used for state preparation e.g. in QAE.

Parameters

  • bounds (ndarray) – k min/max data values [[min_1,max_1],…,[min_k,max_k]], given input data dim k
  • num_qubits (List[int]) – k numbers of qubits to determine representation resolution, i.e. n qubits enable the representation of 2**n values [n_1,…, n_k]
  • generator_circuit (Union[UnivariateVariationalDistribution, MultivariateVariationalDistribution, QuantumCircuit, None]) – a UnivariateVariationalDistribution for univariate data, a MultivariateVariationalDistribution for multivariate data, or a QuantumCircuit implementing the generator.
  • init_params (Union[List[float], ndarray, None]) – 1D numpy array or list, Initialization for the generator’s parameters.
  • optimizer (Optional[Optimizer]) – optimizer to be used for the training of the generator
  • snapshot_dir (Optional[str]) – str or None, if not None save the optimizer’s parameter after every update step to the given directory

Raises

AquaError – Set multivariate variational distribution to represent multivariate data

__init__

__init__(bounds, num_qubits, generator_circuit=None, init_params=None, optimizer=None, snapshot_dir=None)

Parameters

  • bounds (ndarray) – k min/max data values [[min_1,max_1],…,[min_k,max_k]], given input data dim k
  • num_qubits (List[int]) – k numbers of qubits to determine representation resolution, i.e. n qubits enable the representation of 2**n values [n_1,…, n_k]
  • generator_circuit (Union[UnivariateVariationalDistribution, MultivariateVariationalDistribution, QuantumCircuit, None]) – a UnivariateVariationalDistribution for univariate data, a MultivariateVariationalDistribution for multivariate data, or a QuantumCircuit implementing the generator.
  • init_params (Union[List[float], ndarray, None]) – 1D numpy array or list, Initialization for the generator’s parameters.
  • optimizer (Optional[Optimizer]) – optimizer to be used for the training of the generator
  • snapshot_dir (Optional[str]) – str or None, if not None save the optimizer’s parameter after every update step to the given directory

Raises

AquaError – Set multivariate variational distribution to represent multivariate data


Methods

__init__(bounds, num_qubits[, …])type boundsndarray
construct_circuit([params])Construct generator circuit.
get_output(quantum_instance[, params, shots])Get classical data samples from the generator.
loss(x, weights)Loss function for training the generator’s parameters.
set_discriminator(discriminator)Set discriminator network.
set_seed(seed)Set seed.
train([quantum_instance, shots])Perform one training step w.r.t to the generator’s parameters

construct_circuit

construct_circuit(params=None)

Construct generator circuit.

Parameters

params (list | dict) – parameters which should be used to run the generator.

Returns

construct the quantum circuit and return as gate

Return type

Instruction

get_output

get_output(quantum_instance, params=None, shots=None)

Get classical data samples from the generator. Running the quantum generator circuit results in a quantum state. To train this generator with a classical discriminator, we need to sample classical outputs by measuring the quantum state and mapping them to feature space defined by the training data.

Parameters

  • quantum_instance (QuantumInstance) – Quantum Instance, used to run the generator circuit.
  • params (numpy.ndarray) – array or None, parameters which should be used to run the generator, if None use self._params
  • shots (int) – if not None use a number of shots that is different from the number set in quantum_instance

Returns

generated samples, array: sample occurrence in percentage

Return type

list

loss

loss(x, weights)

Loss function for training the generator’s parameters.

Parameters

  • x (numpy.ndarray) – sample label (equivalent to discriminator output)
  • weights (numpy.ndarray) – probability for measuring the sample

Returns

loss function

Return type

float

set_discriminator

set_discriminator(discriminator)

Set discriminator network.

Parameters

discriminator (Discriminator) – Discriminator used to compute the loss function.

set_seed

set_seed(seed)

Set seed.

Parameters

seed (int) – seed

train

train(quantum_instance=None, shots=None)

Perform one training step w.r.t to the generator’s parameters

Parameters

  • quantum_instance (QuantumInstance) – used to run the generator circuit.
  • shots (int) – Number of shots for hardware or qasm execution.

Returns

generator loss(float) and updated parameters (array).

Return type

dict

Was this page helpful?
Report a bug or request content on GitHub.