pub struct SvdCotangent<T: Scalar> {
pub u: Option<Tensor<T>>,
pub s: Option<Tensor<T>>,
pub vt: Option<Tensor<T>>,
}Expand description
Cotangent (adjoint) for SVD outputs.
Each field is Option because the user may not need gradients for
all outputs (e.g., only s for singular value optimization).
§Examples
ⓘ
use tenferro_linalg::SvdCotangent;
use tenferro_tensor::{Tensor, MemoryOrder};
use tenferro_device::LogicalMemorySpace;
let col = MemoryOrder::ColumnMajor;
let mem = LogicalMemorySpace::MainMemory;
// Only need gradient through singular values
let cotangent = SvdCotangent {
u: None,
s: Some(Tensor::<f64>::ones(&[3], mem, col)),
vt: None,
};Fields§
§u: Option<Tensor<T>>Cotangent for U. Shape must match SvdResult::u.
s: Option<Tensor<T>>Cotangent for S. Shape must match SvdResult::s.
vt: Option<Tensor<T>>Cotangent for Vt. Shape must match SvdResult::vt.
Auto Trait Implementations§
impl<T> Freeze for SvdCotangent<T>
impl<T> !RefUnwindSafe for SvdCotangent<T>
impl<T> Send for SvdCotangent<T>
impl<T> Sync for SvdCotangent<T>
impl<T> Unpin for SvdCotangent<T>where
T: Unpin,
impl<T> !UnwindSafe for SvdCotangent<T>
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