pub struct QuantumDataset { /* private fields */ }Expand description
TensorFlow Quantum-style quantum dataset utilities
Implementations§
Source§impl QuantumDataset
impl QuantumDataset
Sourcepub fn new(
circuits: Vec<Circuit<8>>,
parameters: Array2<f64>,
labels: Array1<f64>,
batch_size: usize,
) -> Result<Self>
pub fn new( circuits: Vec<Circuit<8>>, parameters: Array2<f64>, labels: Array1<f64>, batch_size: usize, ) -> Result<Self>
Create new quantum dataset
Examples found in repository?
examples/tensorflow_quantum_demo.rs (lines 328-333)
295fn create_tfq_quantum_dataset() -> Result<QuantumDataset> {
296 let num_samples = 1000;
297 let num_features = 4;
298
299 // Create classical data
300 let classical_data = Array2::from_shape_fn((num_samples, num_features), |(i, j)| {
301 let noise = fastrand::f64() * 0.1;
302 ((i as f64 * 0.01) + (j as f64 * 0.1)).sin() + noise
303 });
304
305 // Create labels (binary classification)
306 let labels = Array1::from_shape_fn(num_samples, |i| {
307 let sum = (0..num_features)
308 .map(|j| classical_data[[i, j]])
309 .sum::<f64>();
310 if sum > 0.0 {
311 1.0
312 } else {
313 0.0
314 }
315 });
316
317 // Create quantum circuits for the dataset
318 let circuits =
319 vec![tfq_utils::create_data_encoding_circuit(4, DataEncodingType::Angle)?; num_samples]
320 .into_iter()
321 .map(|dc| match dc {
322 DynamicCircuit::Circuit8(c) => c,
323 _ => panic!("Expected Circuit8"),
324 })
325 .collect();
326
327 // Create quantum dataset with angle encoding
328 QuantumDataset::new(
329 circuits,
330 classical_data,
331 labels,
332 32, // batch_size
333 )
334}
335
336fn create_tfq_test_dataset() -> Result<QuantumDataset> {
337 let num_samples = 200;
338 let num_features = 4;
339
340 let test_data = Array2::from_shape_fn((num_samples, num_features), |(i, j)| {
341 let noise = fastrand::f64() * 0.1;
342 ((i as f64 * 0.015) + (j as f64 * 0.12)).sin() + noise
343 });
344
345 let test_labels = Array1::from_shape_fn(num_samples, |i| {
346 let sum = (0..num_features).map(|j| test_data[[i, j]]).sum::<f64>();
347 if sum > 0.0 {
348 1.0
349 } else {
350 0.0
351 }
352 });
353
354 // Create quantum circuits for the test dataset
355 let test_circuits =
356 vec![tfq_utils::create_data_encoding_circuit(4, DataEncodingType::Angle)?; num_samples]
357 .into_iter()
358 .map(|dc| match dc {
359 DynamicCircuit::Circuit8(c) => c,
360 _ => panic!("Expected Circuit8"),
361 })
362 .collect();
363
364 QuantumDataset::new(test_circuits, test_data, test_labels, 32)
365}Sourcepub fn batches(&self) -> QuantumDatasetIterator<'_> ⓘ
pub fn batches(&self) -> QuantumDatasetIterator<'_> ⓘ
Get batch iterator
Auto Trait Implementations§
impl Freeze for QuantumDataset
impl !RefUnwindSafe for QuantumDataset
impl Send for QuantumDataset
impl Sync for QuantumDataset
impl Unpin for QuantumDataset
impl !UnwindSafe for QuantumDataset
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.