Struct burn_autodiff::ADBackendDecorator
source · pub struct ADBackendDecorator<B> { /* private fields */ }
Trait Implementations§
source§impl<B: Backend> ADBackend for ADBackendDecorator<B>
impl<B: Backend> ADBackend for ADBackendDecorator<B>
type InnerBackend = B
type Gradients = Grads
fn backward<const D: usize>(tensor: &ADTensor<D, B>) -> Grads
fn grad<const D: usize>(
tensor: &ADTensor<D, B>,
grads: &Grads
) -> Option<B::TensorPrimitive<D>>
fn inner<const D: usize>(tensor: &ADTensor<D, B>) -> B::TensorPrimitive<D>
fn from_inner<const D: usize>(tensor: B::TensorPrimitive<D>) -> ADTensor<D, B>
source§impl<B: Backend> Backend for ADBackendDecorator<B>
impl<B: Backend> Backend for ADBackendDecorator<B>
type Device = <B as Backend>::Device
type Elem = <B as Backend>::Elem
type FullPrecisionElem = <B as Backend>::FullPrecisionElem
type IntegerBackend = <B as Backend>::IntegerBackend
type FullPrecisionBackend = ADBackendDecorator<<B as Backend>::FullPrecisionBackend>
type TensorPrimitive<const D: usize> = ADTensor<D, B>
type BoolTensorPrimitive<const D: usize> = <B as Backend>::BoolTensorPrimitive<D>
fn ad_enabled() -> bool
fn name() -> String
fn seed(seed: u64)
source§impl<B: Clone> Clone for ADBackendDecorator<B>
impl<B: Clone> Clone for ADBackendDecorator<B>
source§fn clone(&self) -> ADBackendDecorator<B>
fn clone(&self) -> ADBackendDecorator<B>
Returns a copy 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<B: Debug> Debug for ADBackendDecorator<B>
impl<B: Debug> Debug for ADBackendDecorator<B>
source§impl<B: Default> Default for ADBackendDecorator<B>
impl<B: Default> Default for ADBackendDecorator<B>
source§fn default() -> ADBackendDecorator<B>
fn default() -> ADBackendDecorator<B>
Returns the “default value” for a type. Read more
source§impl<B: Backend> ModuleOps<ADBackendDecorator<B>> for ADBackendDecorator<B>
impl<B: Backend> ModuleOps<ADBackendDecorator<B>> for ADBackendDecorator<B>
fn embedding(
weights: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<2>,
indexes: &<<ADBackendDecorator<B> as Backend>::IntegerBackend as Backend>::TensorPrimitive<2>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<3>
fn embedding_backward(
weights: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<2>,
output: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<3>,
indexes: &<<ADBackendDecorator<B> as Backend>::IntegerBackend as Backend>::TensorPrimitive<2>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<2>
source§impl<B: Backend> TensorOps<ADBackendDecorator<B>> for ADBackendDecorator<B>
impl<B: Backend> TensorOps<ADBackendDecorator<B>> for ADBackendDecorator<B>
fn from_data<const D: usize>(
data: Data<B::Elem, D>,
device: B::Device
) -> ADTensor<D, B>
fn from_data_bool<const D: usize>(
data: Data<bool, D>,
device: B::Device
) -> B::BoolTensorPrimitive<D>
fn random<const D: usize>(
shape: Shape<D>,
distribution: Distribution<B::Elem>,
device: B::Device
) -> ADTensor<D, B>
fn zeros<const D: usize>(shape: Shape<D>, device: B::Device) -> ADTensor<D, B>
fn ones<const D: usize>(shape: Shape<D>, device: B::Device) -> ADTensor<D, B>
fn shape<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> &Shape<D>
fn to_data<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> Data<<ADBackendDecorator<B> as Backend>::Elem, D>
fn into_data<const D: usize>(
tensor: <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> Data<<ADBackendDecorator<B> as Backend>::Elem, D>
fn bool_shape<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
) -> &Shape<D>
fn bool_to_data<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
) -> Data<bool, D>
fn bool_into_data<const D: usize>(
tensor: <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
) -> Data<bool, D>
fn bool_reshape<const D1: usize, const D2: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D1>,
shape: Shape<D2>
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D2>
fn bool_index<const D1: usize, const D2: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D1>,
indexes: [Range<usize>; D2]
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D1>
fn bool_to_device<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>,
device: <ADBackendDecorator<B> as Backend>::Device
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn device<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::Device
fn to_device<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
device: <ADBackendDecorator<B> as Backend>::Device
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn empty<const D: usize>(
shape: Shape<D>,
device: <ADBackendDecorator<B> as Backend>::Device
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn add<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn add_scalar<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::Elem
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn sub<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn sub_scalar<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::Elem
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn mul<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn mul_scalar<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::Elem
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn div<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn div_scalar<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::Elem
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn matmul<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn neg<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn swap_dims<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
dim1: usize,
dim2: usize
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn reshape<const D1: usize, const D2: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D1>,
shape: Shape<D2>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D2>
fn index<const D1: usize, const D2: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D1>,
indexes: [Range<usize>; D2]
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D1>
fn index_assign<const D1: usize, const D2: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D1>,
indexes: [Range<usize>; D2],
value: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D1>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D1>
fn mask_fill<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
mask: &<ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>,
value: <ADBackendDecorator<B> as Backend>::Elem
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn equal<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn equal_scalar<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::Elem
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn greater<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn greater_scalar<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::Elem
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn greater_equal<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn greater_equal_scalar<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::Elem
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn lower<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn lower_scalar<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::Elem
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn lower_equal<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn lower_equal_scalar<const D: usize>(
lhs: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
rhs: &<ADBackendDecorator<B> as Backend>::Elem
) -> <ADBackendDecorator<B> as Backend>::BoolTensorPrimitive<D>
fn detach<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn mean<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<1>
fn sum<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<1>
fn mean_dim<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
dim: usize
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn sum_dim<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
dim: usize
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn to_full_precision<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <<ADBackendDecorator<B> as Backend>::FullPrecisionBackend as Backend>::TensorPrimitive<D>
fn from_full_precision<const D: usize>(
tensor: &<<ADBackendDecorator<B> as Backend>::FullPrecisionBackend as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn argmax<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
dim: usize
) -> <<ADBackendDecorator<B> as Backend>::IntegerBackend as Backend>::TensorPrimitive<D>
fn argmin<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
dim: usize
) -> <<ADBackendDecorator<B> as Backend>::IntegerBackend as Backend>::TensorPrimitive<D>
fn exp<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn log<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn powf<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>,
value: f32
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn sqrt<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn erf<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn cat<const D: usize>(
tensors: &[<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>],
dim: usize
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn relu<const D: usize>(
tensor: &<ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
) -> <ADBackendDecorator<B> as Backend>::TensorPrimitive<D>
fn arange(
range: Range<usize>,
device: <B as Backend>::Device
) -> <<B as Backend>::IntegerBackend as Backend>::TensorPrimitive<1>
fn repeat<const D: usize>(
tensor: &<B as Backend>::TensorPrimitive<D>,
dim: usize,
times: usize
) -> <B as Backend>::TensorPrimitive<D>
fn transpose<const D: usize>(
tensor: &<B as Backend>::TensorPrimitive<D>
) -> <B as Backend>::TensorPrimitive<D>
impl<B: Copy> Copy for ADBackendDecorator<B>
Auto Trait Implementations§
impl<B> RefUnwindSafe for ADBackendDecorator<B>where
B: RefUnwindSafe,
impl<B> Send for ADBackendDecorator<B>where
B: Send,
impl<B> Sync for ADBackendDecorator<B>where
B: Sync,
impl<B> Unpin for ADBackendDecorator<B>where
B: Unpin,
impl<B> UnwindSafe for ADBackendDecorator<B>where
B: UnwindSafe,
Blanket Implementations§
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§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 more§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).§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.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.