NEML2 1.4.0
Loading...
Searching...
No Matches
PrimitiveTensor< Derived, S > Class Template Reference

PrimitiveTensor inherits from TensorBase and additionally templates on the base shape. More...

Detailed Description

template<class Derived, Size... S>
class neml2::PrimitiveTensor< Derived, S >

PrimitiveTensor inherits from TensorBase and additionally templates on the base shape.

Template Parameters
SBase shape

#include <PrimitiveTensor.h>

Inheritance diagram for PrimitiveTensor< Derived, S >:

Public Member Functions

 PrimitiveTensor ()=default
 Default constructor.
 
 PrimitiveTensor (const torch::Tensor &tensor, Size batch_dim)
 Construct from another torch::Tensor given batch dimension.
 
 PrimitiveTensor (const torch::Tensor &tensor)
 Construct from another torch::Tensor and infer batch dimension.
 
 operator Tensor () const
 Implicit conversion to a Tensor and loses information on the fixed base shape.
 
- Public Member Functions inherited from TensorBase< Derived >
 TensorBase ()=default
 Default constructor.
 
 TensorBase (const torch::Tensor &tensor, Size batch_dim)
 Construct from another torch::Tensor.
 
 TensorBase (const Derived &tensor)
 Copy constructor.
 
 TensorBase (Real)=delete
 
Derived clone (torch::MemoryFormat memory_format=torch::MemoryFormat::Contiguous) const
 
Derived detach () const
 Discard function graph.
 
Derived to (const torch::TensorOptions &options) const
 Change tensor options.
 
Derived operator- () const
 Negation.
 
bool batched () const
 Whether the tensor is batched.
 
Size batch_dim () const
 Return the number of batch dimensions.
 
Size base_dim () const
 Return the number of base dimensions.
 
TensorShapeRef batch_sizes () const
 Return the batch size.
 
Size batch_size (Size index) const
 Return the size of a batch axis.
 
TensorShapeRef base_sizes () const
 Return the base size.
 
Size base_size (Size index) const
 Return the size of a base axis.
 
Size base_storage () const
 Return the flattened storage needed just for the base indices.
 
Derived batch_index (indexing::TensorIndicesRef indices) const
 Get a tensor by slicing on the batch dimensions.
 
neml2::Tensor base_index (indexing::TensorIndicesRef indices) const
 Get a tensor by slicing on the base dimensions.
 
void batch_index_put_ (indexing::TensorIndicesRef indices, const torch::Tensor &other)
 Set values by slicing on the batch dimensions.
 
void base_index_put_ (indexing::TensorIndicesRef indices, const torch::Tensor &other)
 Set values by slicing on the base dimensions.
 
Derived batch_expand (TensorShapeRef batch_size) const
 
neml2::Tensor base_expand (TensorShapeRef base_size) const
 Return a new view of the tensor with values broadcast along the base dimensions.
 
template<class Derived2 >
Derived batch_expand_as (const Derived2 &other) const
 Expand the batch to have the same shape as another tensor.
 
template<class Derived2 >
Derived2 base_expand_as (const Derived2 &other) const
 Expand the base to have the same shape as another tensor.
 
Derived batch_expand_copy (TensorShapeRef batch_size) const
 Return a new tensor with values broadcast along the batch dimensions.
 
neml2::Tensor base_expand_copy (TensorShapeRef base_size) const
 Return a new tensor with values broadcast along the base dimensions.
 
Derived batch_reshape (TensorShapeRef batch_shape) const
 Reshape batch dimensions.
 
neml2::Tensor base_reshape (TensorShapeRef base_shape) const
 Reshape base dimensions.
 
Derived batch_unsqueeze (Size d) const
 Unsqueeze a batch dimension.
 
neml2::Tensor base_unsqueeze (Size d) const
 Unsqueeze a base dimension.
 
Derived batch_transpose (Size d1, Size d2) const
 Transpose two batch dimensions.
 
neml2::Tensor base_transpose (Size d1, Size d2) const
 Transpose two base dimensions.
 

Static Public Member Functions

static Derived empty (const torch::TensorOptions &options=default_tensor_options())
 Unbatched empty tensor.
 
static Derived empty (TensorShapeRef batch_shape, const torch::TensorOptions &options=default_tensor_options())
 Empty tensor given batch shape.
 
static Derived zeros (const torch::TensorOptions &options=default_tensor_options())
 Unbatched zero tensor.
 
static Derived zeros (TensorShapeRef batch_shape, const torch::TensorOptions &options=default_tensor_options())
 Zero tensor given batch shape.
 
static Derived ones (const torch::TensorOptions &options=default_tensor_options())
 Unbatched unit tensor.
 
static Derived ones (TensorShapeRef batch_shape, const torch::TensorOptions &options=default_tensor_options())
 Unit tensor given batch shape.
 
static Derived full (Real init, const torch::TensorOptions &options=default_tensor_options())
 Unbatched tensor filled with a given value given base shape.
 
static Derived full (TensorShapeRef batch_shape, Real init, const torch::TensorOptions &options=default_tensor_options())
 Full tensor given batch shape.
 
static Tensor identity_map (const torch::TensorOptions &)
 Derived tensor classes should define identity_map where appropriate.
 
- Static Public Member Functions inherited from TensorBase< Derived >
static Derived empty_like (const Derived &other)
 Empty tensor like another, i.e. same batch and base shapes, same tensor options, etc.
 
static Derived zeros_like (const Derived &other)
 Zero tensor like another, i.e. same batch and base shapes, same tensor options, etc.
 
static Derived ones_like (const Derived &other)
 Unit tensor like another, i.e. same batch and base shapes, same tensor options, etc.
 
static Derived full_like (const Derived &other, Real init)
 
static Derived linspace (const Derived &start, const Derived &end, Size nstep, Size dim=0, Size batch_dim=-1)
 Create a new tensor by adding a new batch dimension with linear spacing between start and end.
 
static Derived logspace (const Derived &start, const Derived &end, Size nstep, Size dim=0, Size batch_dim=-1, Real base=10)
 log-space equivalent of the linspace named constructor
 

Static Public Attributes

static const TensorShape const_base_sizes = {S...}
 The base shape.
 
static constexpr Size const_base_dim = sizeof...(S)
 The base dim.
 
static const Size const_base_storage = utils::storage_size({S...})
 The base storage.
 

Constructor & Destructor Documentation

◆ PrimitiveTensor() [1/3]

template<class Derived , Size... S>
PrimitiveTensor ( )
default

Default constructor.

◆ PrimitiveTensor() [2/3]

template<class Derived , Size... S>
PrimitiveTensor ( const torch::Tensor & tensor,
Size batch_dim )
explicit

Construct from another torch::Tensor given batch dimension.

◆ PrimitiveTensor() [3/3]

template<class Derived , Size... S>
PrimitiveTensor ( const torch::Tensor & tensor)

Construct from another torch::Tensor and infer batch dimension.

Member Function Documentation

◆ empty() [1/2]

template<class Derived , Size... S>
Derived empty ( const torch::TensorOptions & options = default_tensor_options())
static

Unbatched empty tensor.

◆ empty() [2/2]

template<class Derived , Size... S>
Derived empty ( TensorShapeRef batch_shape,
const torch::TensorOptions & options = default_tensor_options() )
static

Empty tensor given batch shape.

◆ full() [1/2]

template<class Derived , Size... S>
Derived full ( Real init,
const torch::TensorOptions & options = default_tensor_options() )
static

Unbatched tensor filled with a given value given base shape.

◆ full() [2/2]

template<class Derived , Size... S>
Derived full ( TensorShapeRef batch_shape,
Real init,
const torch::TensorOptions & options = default_tensor_options() )
static

Full tensor given batch shape.

◆ identity_map()

template<class Derived , Size... S>
static Tensor identity_map ( const torch::TensorOptions & )
inlinestatic

Derived tensor classes should define identity_map where appropriate.

◆ ones() [1/2]

template<class Derived , Size... S>
Derived ones ( const torch::TensorOptions & options = default_tensor_options())
static

Unbatched unit tensor.

◆ ones() [2/2]

template<class Derived , Size... S>
Derived ones ( TensorShapeRef batch_shape,
const torch::TensorOptions & options = default_tensor_options() )
static

Unit tensor given batch shape.

◆ operator Tensor()

template<class Derived , Size... S>
operator Tensor ( ) const

Implicit conversion to a Tensor and loses information on the fixed base shape.

◆ zeros() [1/2]

template<class Derived , Size... S>
Derived zeros ( const torch::TensorOptions & options = default_tensor_options())
static

Unbatched zero tensor.

◆ zeros() [2/2]

template<class Derived , Size... S>
Derived zeros ( TensorShapeRef batch_shape,
const torch::TensorOptions & options = default_tensor_options() )
static

Zero tensor given batch shape.

Member Data Documentation

◆ const_base_dim

template<class Derived , Size... S>
constexpr Size const_base_dim = sizeof...(S)
staticconstexpr

The base dim.

◆ const_base_sizes

template<class Derived , Size... S>
const TensorShape const_base_sizes = {S...}
inlinestatic

The base shape.

◆ const_base_storage

template<class Derived , Size... S>
const Size const_base_storage = utils::storage_size({S...})
inlinestatic

The base storage.