pub struct TQTensorNetworkBackend {
pub mps: Option<MatrixProductState>,
pub n_wires: usize,
pub config: TensorNetworkConfig,
pub static_mode: bool,
pub gate_cache: HashMap<String, Array2<CType>>,
}Expand description
TorchQuantum Tensor Network Backend
Provides MPS/PEPS simulation backend for TorchQuantum circuits.
Fields§
§mps: Option<MatrixProductState>MPS representation of the state
n_wires: usizeNumber of qubits
config: TensorNetworkConfigConfiguration
static_mode: boolStatic mode flag
gate_cache: HashMap<String, Array2<CType>>Gate cache for static mode
Implementations§
Source§impl TQTensorNetworkBackend
impl TQTensorNetworkBackend
Sourcepub fn with_config(n_wires: usize, config: TensorNetworkConfig) -> Self
pub fn with_config(n_wires: usize, config: TensorNetworkConfig) -> Self
Create with custom configuration
Sourcepub fn apply_gate(&mut self, site: usize, gate: &Array2<CType>) -> Result<()>
pub fn apply_gate(&mut self, site: usize, gate: &Array2<CType>) -> Result<()>
Apply single-qubit gate
Sourcepub fn apply_two_qubit_gate(
&mut self,
site1: usize,
site2: usize,
gate: &Array2<CType>,
) -> Result<()>
pub fn apply_two_qubit_gate( &mut self, site1: usize, site2: usize, gate: &Array2<CType>, ) -> Result<()>
Apply two-qubit gate
Sourcepub fn get_state_vector(&self) -> Result<Vec<CType>>
pub fn get_state_vector(&self) -> Result<Vec<CType>>
Get state vector (contracts MPS)
Sourcepub fn expectation_value(
&self,
observable: &Array2<CType>,
sites: &[usize],
) -> Result<f64>
pub fn expectation_value( &self, observable: &Array2<CType>, sites: &[usize], ) -> Result<f64>
Get expectation value of observable
Sourcepub fn bond_dimension(&self) -> usize
pub fn bond_dimension(&self) -> usize
Get current bond dimension
Sourcepub fn to_tq_device(&self) -> Result<TQDevice>
pub fn to_tq_device(&self) -> Result<TQDevice>
Convert to TQDevice for compatibility
Sourcepub fn from_tq_device(qdev: &TQDevice) -> Result<Self>
pub fn from_tq_device(qdev: &TQDevice) -> Result<Self>
Create from TQDevice
Trait Implementations§
Source§impl Clone for TQTensorNetworkBackend
impl Clone for TQTensorNetworkBackend
Source§fn clone(&self) -> TQTensorNetworkBackend
fn clone(&self) -> TQTensorNetworkBackend
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for TQTensorNetworkBackend
impl Debug for TQTensorNetworkBackend
Source§impl TQModule for TQTensorNetworkBackend
impl TQModule for TQTensorNetworkBackend
Source§fn forward(&mut self, _qdev: &mut TQDevice) -> Result<()>
fn forward(&mut self, _qdev: &mut TQDevice) -> Result<()>
Execute the forward pass on the quantum device
Source§fn parameters(&self) -> Vec<TQParameter>
fn parameters(&self) -> Vec<TQParameter>
Get all trainable parameters
Source§fn set_n_wires(&mut self, n_wires: usize)
fn set_n_wires(&mut self, n_wires: usize)
Set number of wires
Source§fn is_static_mode(&self) -> bool
fn is_static_mode(&self) -> bool
Check if module is in static mode
Source§fn static_off(&mut self)
fn static_off(&mut self)
Disable static mode
Source§fn forward_with_input(
&mut self,
qdev: &mut TQDevice,
_x: Option<&Array2<f64>>,
) -> Result<()>
fn forward_with_input( &mut self, qdev: &mut TQDevice, _x: Option<&Array2<f64>>, ) -> Result<()>
Execute forward pass with optional input data (for encoders)
Auto Trait Implementations§
impl Freeze for TQTensorNetworkBackend
impl RefUnwindSafe for TQTensorNetworkBackend
impl Send for TQTensorNetworkBackend
impl Sync for TQTensorNetworkBackend
impl Unpin for TQTensorNetworkBackend
impl UnwindSafe for TQTensorNetworkBackend
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.