pub struct QConv2D { /* private fields */ }Expand description
Quantum convolutional layer operating on 2D qubit grids
Extends QConv1D to operate on 2D arrangements of qubits, applying kernels to rectangular patches of the qubit lattice.
Implementations§
Source§impl QConv2D
impl QConv2D
Sourcepub fn new(
width: usize,
height: usize,
kernel_width: usize,
kernel_height: usize,
stride_x: usize,
stride_y: usize,
n_params_per_kernel: usize,
) -> MLResult<Self>
pub fn new( width: usize, height: usize, kernel_width: usize, kernel_height: usize, stride_x: usize, stride_y: usize, n_params_per_kernel: usize, ) -> MLResult<Self>
Create a new 2D quantum convolutional layer
§Arguments
width- Grid width (qubits in x direction)height- Grid height (qubits in y direction)kernel_width- Kernel widthkernel_height- Kernel heightstride_x- Stride in x directionstride_y- Stride in y directionn_params_per_kernel- Number of rotation parameters per kernel
§Example
ⓘ
// 4×4 qubit grid, 2×2 kernel, stride (1,1), 8 parameters per kernel
let conv = QConv2D::new(4, 4, 2, 2, 1, 1, 8)?;
// Will apply kernel at 9 positions (3×3 grid of positions)
// Total: 9 × 8 = 72 parametersSourcepub fn kernel_positions(&self) -> Vec<(usize, usize)>
pub fn kernel_positions(&self) -> Vec<(usize, usize)>
Get the 2D positions where kernels will be applied
Sourcepub fn kernel_qubits(&self, position: (usize, usize)) -> Vec<(usize, usize)>
pub fn kernel_qubits(&self, position: (usize, usize)) -> Vec<(usize, usize)>
Get the qubit coordinates for a specific kernel position Returns (x, y) coordinates in the 2D grid
Sourcepub fn coords_to_index(&self, x: usize, y: usize) -> usize
pub fn coords_to_index(&self, x: usize, y: usize) -> usize
Convert 2D coordinates to 1D qubit index
Sourcepub fn index_to_coords(&self, index: usize) -> (usize, usize)
pub fn index_to_coords(&self, index: usize) -> (usize, usize)
Convert 1D qubit index to 2D coordinates
Trait Implementations§
Auto Trait Implementations§
impl Freeze for QConv2D
impl RefUnwindSafe for QConv2D
impl Send for QConv2D
impl Sync for QConv2D
impl Unpin for QConv2D
impl UnwindSafe for QConv2D
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.