pub struct DifferentiableTensor { /* private fields */ }Expand description
A differentiable tensor that tracks gradients and compute graph information
Implementations§
Source§impl DifferentiableTensor
impl DifferentiableTensor
Sourcepub fn new(data: DenseTensor, requires_grad: bool) -> Self
pub fn new(data: DenseTensor, requires_grad: bool) -> Self
Create a new differentiable tensor
Sourcepub fn with_graph(
data: DenseTensor,
requires_grad: bool,
graph: &mut ComputeGraph,
) -> Self
pub fn with_graph( data: DenseTensor, requires_grad: bool, graph: &mut ComputeGraph, ) -> Self
Create a differentiable tensor with compute graph tracking
Sourcepub fn data(&self) -> &DenseTensor
pub fn data(&self) -> &DenseTensor
Get the underlying data
Sourcepub fn data_mut(&mut self) -> &mut DenseTensor
pub fn data_mut(&mut self) -> &mut DenseTensor
Get mutable reference to data
Sourcepub fn grad(&self) -> Option<&DenseTensor>
pub fn grad(&self) -> Option<&DenseTensor>
Get the gradient (if computed)
Sourcepub fn grad_mut(&mut self) -> Option<&mut DenseTensor>
pub fn grad_mut(&mut self) -> Option<&mut DenseTensor>
Get mutable reference to gradient
Sourcepub fn set_grad(&mut self, grad: DenseTensor)
pub fn set_grad(&mut self, grad: DenseTensor)
Set the gradient
Sourcepub fn requires_grad(&self) -> bool
pub fn requires_grad(&self) -> bool
Check if this tensor requires gradient
Sourcepub fn matmul(
&self,
other: &DifferentiableTensor,
graph: &mut ComputeGraph,
) -> DifferentiableTensor
pub fn matmul( &self, other: &DifferentiableTensor, graph: &mut ComputeGraph, ) -> DifferentiableTensor
Matrix multiplication
Sourcepub fn add(
&self,
other: &DifferentiableTensor,
graph: &mut ComputeGraph,
) -> DifferentiableTensor
pub fn add( &self, other: &DifferentiableTensor, graph: &mut ComputeGraph, ) -> DifferentiableTensor
Element-wise addition
Sourcepub fn sub(
&self,
other: &DifferentiableTensor,
graph: &mut ComputeGraph,
) -> DifferentiableTensor
pub fn sub( &self, other: &DifferentiableTensor, graph: &mut ComputeGraph, ) -> DifferentiableTensor
Element-wise subtraction
Sourcepub fn mul(
&self,
other: &DifferentiableTensor,
graph: &mut ComputeGraph,
) -> DifferentiableTensor
pub fn mul( &self, other: &DifferentiableTensor, graph: &mut ComputeGraph, ) -> DifferentiableTensor
Element-wise multiplication
Sourcepub fn relu(&self, graph: &mut ComputeGraph) -> DifferentiableTensor
pub fn relu(&self, graph: &mut ComputeGraph) -> DifferentiableTensor
ReLU activation
Sourcepub fn gelu(&self, graph: &mut ComputeGraph) -> DifferentiableTensor
pub fn gelu(&self, graph: &mut ComputeGraph) -> DifferentiableTensor
GELU activation
Sourcepub fn softmax(
&self,
dim: isize,
graph: &mut ComputeGraph,
) -> DifferentiableTensor
pub fn softmax( &self, dim: isize, graph: &mut ComputeGraph, ) -> DifferentiableTensor
Softmax activation
Sourcepub fn transpose(&self, graph: &mut ComputeGraph) -> DifferentiableTensor
pub fn transpose(&self, graph: &mut ComputeGraph) -> DifferentiableTensor
Transpose
Sourcepub fn detach(&self) -> DifferentiableTensor
pub fn detach(&self) -> DifferentiableTensor
Detach from compute graph (for inference)
Sourcepub fn backward(&mut self, graph: &mut ComputeGraph)
pub fn backward(&mut self, graph: &mut ComputeGraph)
Perform backward pass
Trait Implementations§
Source§impl Clone for DifferentiableTensor
impl Clone for DifferentiableTensor
Source§fn clone(&self) -> DifferentiableTensor
fn clone(&self) -> DifferentiableTensor
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 DifferentiableTensor
impl Debug for DifferentiableTensor
Source§impl From<DenseTensor> for DifferentiableTensor
Convert from DenseTensor
impl From<DenseTensor> for DifferentiableTensor
Convert from DenseTensor
Source§fn from(tensor: DenseTensor) -> Self
fn from(tensor: DenseTensor) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for DifferentiableTensor
impl RefUnwindSafe for DifferentiableTensor
impl Send for DifferentiableTensor
impl Sync for DifferentiableTensor
impl Unpin for DifferentiableTensor
impl UnsafeUnpin for DifferentiableTensor
impl UnwindSafe for DifferentiableTensor
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> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§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<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.