1 unstable release

new 0.1.0-alpha.2 May 15, 2025

#565 in Simulation

MIT/Apache

565KB
11K SLoC

QuantRS2 Machine Learning Module

The quantrs2-ml crate provides quantum machine learning capabilities for the QuantRS2 quantum computing framework.

Features

  • Quantum Neural Networks: Parameterized quantum circuits for machine learning tasks
  • Variational Quantum Algorithms: Hybrid quantum-classical optimization for complex problems
  • Application-Specific Modules:
    • High-Energy Physics: Quantum classification of particle collision data from accelerators
    • Generative Models: Quantum GANs for data generation and augmentation
    • Cryptography: Post-quantum cryptographic algorithms and protocols
    • Natural Language Processing: Quantum-enhanced text understanding and generation
    • Blockchain: Quantum-secured distributed ledger technology

Installation

The quantrs2-ml crate is included in the main QuantRS2 workspace. To use it in your project:

[dependencies]
quantrs2-ml = "0.1.0-alpha.2"

Usage Examples

Quantum Neural Network

use quantrs2_ml::prelude::*;
use quantrs2_ml::qnn::{QuantumNeuralNetwork, QNNLayer};

// Create a QNN with a custom architecture
let layers = vec![
    QNNLayer::EncodingLayer { num_features: 4 },
    QNNLayer::VariationalLayer { num_params: 18 },
    QNNLayer::EntanglementLayer { connectivity: "full".to_string() },
    QNNLayer::VariationalLayer { num_params: 18 },
    QNNLayer::MeasurementLayer { measurement_basis: "computational".to_string() },
];

let qnn = QuantumNeuralNetwork::new(
    layers, 
    6,     // 6 qubits
    4,     // 4 input features
    2,     // 2 output classes
)?;

// Train on data
let optimizer = Optimizer::Adam { learning_rate: 0.01 };
let result = qnn.train(&x_train, &y_train, optimizer, 100)?;

High-Energy Physics Classification

use quantrs2_ml::prelude::*;
use quantrs2_ml::hep::{HEPQuantumClassifier, HEPEncodingMethod};

// Create a classifier for HEP data
let classifier = HEPQuantumClassifier::new(
    8,                              // 8 qubits
    10,                             // 10 features
    2,                              // binary classification
    HEPEncodingMethod::HybridEncoding,
    vec!["background".to_string(), "signal".to_string()],
)?;

// Train and evaluate
let training_result = classifier.train(&train_data, &train_labels, 100, 0.01)?;
let metrics = classifier.evaluate(&test_data, &test_labels)?;

println!("Test accuracy: {:.2}%", metrics.accuracy * 100.0);

Quantum Generative Adversarial Network

use quantrs2_ml::prelude::*;
use quantrs2_ml::gan::{QuantumGAN, GeneratorType, DiscriminatorType};

// Create a quantum GAN
let qgan = QuantumGAN::new(
    6,                                      // 6 qubits for generator
    6,                                      // 6 qubits for discriminator
    4,                                      // 4D latent space
    8,                                      // 8D data space
    GeneratorType::HybridClassicalQuantum,
    DiscriminatorType::HybridQuantumFeatures,
)?;

// Train on data
let history = qgan.train(
    &real_data,
    50,    // epochs
    16,    // batch size
    0.01,  // generator learning rate
    0.01,  // discriminator learning rate
    1,     // discriminator steps per generator step
)?;

// Generate new samples
let generated_samples = qgan.generate(10)?;

Quantum Cryptography

use quantrs2_ml::prelude::*;
use quantrs2_ml::crypto::{QuantumKeyDistribution, ProtocolType};

// Create a BB84 quantum key distribution protocol
let mut qkd = QuantumKeyDistribution::new(ProtocolType::BB84, 1000)
    .with_error_rate(0.03);

// Distribute a key
let key_length = qkd.distribute_key()?;
println!("Generated key of length: {} bits", key_length);

// Verify that Alice and Bob have the same key
if qkd.verify_keys() {
    println!("Key distribution successful!");
}

GPU Acceleration

The quantrs2-ml crate supports GPU acceleration for quantum machine learning tasks through the gpu feature:

[dependencies]
quantrs2-ml = { version = "0.1.0-alpha.2", features = ["gpu"] }

License

This project is licensed under either of:

at your option.

Dependencies

~9–45MB
~633K SLoC