Example #1
0
 def test_qgan_training_run_algo_torch(self):
     """Test QGAN training using a PyTorch discriminator."""
     try:
         # Set number of qubits per data dimension as list of k qubit values[#q_0,...,#q_k-1]
         num_qubits = [2]
         # Batch size
         batch_size = 100
         # Set number of training epochs
         num_epochs = 5
         _qgan = QGAN(self._real_data,
                      self._bounds,
                      num_qubits,
                      batch_size,
                      num_epochs,
                      discriminator=PyTorchDiscriminator(n_features=len(num_qubits)),
                      snapshot_dir=None)
         _qgan.seed = self.seed
         _qgan.set_generator()
         trained_statevector = _qgan.run(QuantumInstance(
             BasicAer.get_backend('statevector_simulator'),
             seed_simulator=aqua_globals.random_seed,
             seed_transpiler=aqua_globals.random_seed))
         trained_qasm = _qgan.run(QuantumInstance(BasicAer.get_backend('qasm_simulator'),
                                                  seed_simulator=aqua_globals.random_seed,
                                                  seed_transpiler=aqua_globals.random_seed))
         self.assertAlmostEqual(trained_qasm['rel_entr'],
                                trained_statevector['rel_entr'], delta=0.1)
     except MissingOptionalLibraryError:
         self.skipTest('pytorch not installed, skipping test')
Example #2
0
 def test_qgan_training_run_algo_torch(self):
     """ qgan training run algo torch test """
     try:
         # Set number of qubits per data dimension as list of k qubit values[#q_0,...,#q_k-1]
         num_qubits = [2]
         # Batch size
         batch_size = 100
         # Set number of training epochs
         num_epochs = 5
         _qgan = QGAN(
             self._real_data,
             self._bounds,
             num_qubits,
             batch_size,
             num_epochs,
             discriminator=PyTorchDiscriminator(n_features=len(num_qubits)),
             snapshot_dir=None)
         _qgan.seed = self.seed
         _qgan.set_generator()
         trained_statevector = _qgan.run(
             QuantumInstance(BasicAer.get_backend('statevector_simulator'),
                             seed_simulator=aqua_globals.random_seed,
                             seed_transpiler=aqua_globals.random_seed))
         trained_qasm = _qgan.run(
             QuantumInstance(BasicAer.get_backend('qasm_simulator'),
                             seed_simulator=aqua_globals.random_seed,
                             seed_transpiler=aqua_globals.random_seed))
         self.assertAlmostEqual(trained_qasm['rel_entr'],
                                trained_statevector['rel_entr'],
                                delta=0.1)
     except Exception as ex:  # pylint: disable=broad-except
         self.skipTest(str(ex))
Example #3
0
    def test_qgan_training_run_algo_torch_multivariate(self):
        """Test QGAN training using a PyTorch discriminator, for multivariate distributions."""
        try:
            # Set number of qubits per data dimension as list of k qubit values[#q_0,...,#q_k-1]
            num_qubits = [1, 2]
            # Batch size
            batch_size = 100
            # Set number of training epochs
            num_epochs = 5

            # Reshape data in a multi-variate fashion
            # (two independent identically distributed variables,
            # each represented by half of the generated samples)
            real_data = self._real_data.reshape((-1, 2))
            bounds = [self._bounds, self._bounds]

            _qgan = QGAN(
                real_data,
                bounds,
                num_qubits,
                batch_size,
                num_epochs,
                discriminator=PyTorchDiscriminator(n_features=len(num_qubits)),
                snapshot_dir=None)
            _qgan.seed = self.seed
            _qgan.set_generator()
            trained_statevector = _qgan.run(
                QuantumInstance(BasicAer.get_backend('statevector_simulator'),
                                seed_simulator=aqua_globals.random_seed,
                                seed_transpiler=aqua_globals.random_seed))
            trained_qasm = _qgan.run(
                QuantumInstance(BasicAer.get_backend('qasm_simulator'),
                                seed_simulator=aqua_globals.random_seed,
                                seed_transpiler=aqua_globals.random_seed))
            self.assertAlmostEqual(trained_qasm['rel_entr'],
                                   trained_statevector['rel_entr'],
                                   delta=0.1)
        except MissingOptionalLibraryError:
            self.skipTest('pytorch not installed, skipping test')