pub struct QuantumVariationalDiffusion { /* private fields */ }Expand description
Variational Diffusion Model with quantum components
Implementations§
Source§impl QuantumVariationalDiffusion
impl QuantumVariationalDiffusion
Sourcepub fn new(
data_dim: usize,
latent_dim: usize,
num_qubits: usize,
) -> Result<Self>
pub fn new( data_dim: usize, latent_dim: usize, num_qubits: usize, ) -> Result<Self>
Create new variational diffusion model
Examples found in repository?
examples/quantum_diffusion.rs (lines 323-327)
306fn advanced_diffusion_demo() -> Result<()> {
307 println!("\n6. Advanced Diffusion Techniques:");
308
309 // Conditional generation
310 println!("\n a) Conditional Generation:");
311 let model = QuantumDiffusionModel::new(4, 4, 50, NoiseSchedule::Cosine { s: 0.008 })?;
312 let condition = Array1::from_vec(vec![0.5, -0.5]);
313 let conditional_samples = model.conditional_generate(&condition, 5)?;
314
315 println!(
316 " Generated {} conditional samples",
317 conditional_samples.nrows()
318 );
319 println!(" Condition: [{:.3}, {:.3}]", condition[0], condition[1]);
320
321 // Variational diffusion
322 println!("\n b) Variational Diffusion Model:");
323 let vdm = QuantumVariationalDiffusion::new(
324 4, // data_dim
325 2, // latent_dim
326 4, // num_qubits
327 )?;
328
329 let x = Array1::from_vec(vec![0.1, 0.2, 0.3, 0.4]);
330 let (mean, log_var) = vdm.encode(&x)?;
331
332 println!(" Encoded data to latent space:");
333 println!(" - Input: {:?}", x.as_slice().unwrap());
334 println!(" - Latent mean: [{:.3}, {:.3}]", mean[0], mean[1]);
335 println!(
336 " - Latent log_var: [{:.3}, {:.3}]",
337 log_var[0], log_var[1]
338 );
339
340 Ok(())
341}Sourcepub fn encode(&self, x: &Array1<f64>) -> Result<(Array1<f64>, Array1<f64>)>
pub fn encode(&self, x: &Array1<f64>) -> Result<(Array1<f64>, Array1<f64>)>
Encode data to latent space
Examples found in repository?
examples/quantum_diffusion.rs (line 330)
306fn advanced_diffusion_demo() -> Result<()> {
307 println!("\n6. Advanced Diffusion Techniques:");
308
309 // Conditional generation
310 println!("\n a) Conditional Generation:");
311 let model = QuantumDiffusionModel::new(4, 4, 50, NoiseSchedule::Cosine { s: 0.008 })?;
312 let condition = Array1::from_vec(vec![0.5, -0.5]);
313 let conditional_samples = model.conditional_generate(&condition, 5)?;
314
315 println!(
316 " Generated {} conditional samples",
317 conditional_samples.nrows()
318 );
319 println!(" Condition: [{:.3}, {:.3}]", condition[0], condition[1]);
320
321 // Variational diffusion
322 println!("\n b) Variational Diffusion Model:");
323 let vdm = QuantumVariationalDiffusion::new(
324 4, // data_dim
325 2, // latent_dim
326 4, // num_qubits
327 )?;
328
329 let x = Array1::from_vec(vec![0.1, 0.2, 0.3, 0.4]);
330 let (mean, log_var) = vdm.encode(&x)?;
331
332 println!(" Encoded data to latent space:");
333 println!(" - Input: {:?}", x.as_slice().unwrap());
334 println!(" - Latent mean: [{:.3}, {:.3}]", mean[0], mean[1]);
335 println!(
336 " - Latent log_var: [{:.3}, {:.3}]",
337 log_var[0], log_var[1]
338 );
339
340 Ok(())
341}Auto Trait Implementations§
impl Freeze for QuantumVariationalDiffusion
impl RefUnwindSafe for QuantumVariationalDiffusion
impl Send for QuantumVariationalDiffusion
impl Sync for QuantumVariationalDiffusion
impl Unpin for QuantumVariationalDiffusion
impl UnsafeUnpin for QuantumVariationalDiffusion
impl UnwindSafe for QuantumVariationalDiffusion
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.