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')
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))
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')