Struct TensorValue
pub struct TensorValue { /* private fields */ }Expand description
Owned tensor value with one move-only physical owner and metadata-only layout.
TensorValue is intentionally not cloneable. View transformations consume
the value and move its existing owner; TensorValue::duplicate is the
explicit boundary for creating another physical allocation.
Implementations§
§impl TensorValue
impl TensorValue
pub fn duplicate(&self) -> Result<TensorValue, Error>
pub fn duplicate(&self) -> Result<TensorValue, Error>
Explicitly duplicate the physical owner represented by this value.
§Errors
Returns [crate::Error::RuntimeState] or [crate::Error::Unsupported]
when the backend/storage owner cannot be duplicated.
pub fn from_tensor(tensor: Tensor) -> TensorValue
pub fn from_parts(
tensor: Tensor,
shape: Vec<usize>,
strides: Vec<isize>,
offset: isize,
) -> Result<TensorValue, Error>
pub fn from_parts( tensor: Tensor, shape: Vec<usize>, strides: Vec<isize>, offset: isize, ) -> Result<TensorValue, Error>
§Errors
Returns [ValidationError::InvalidArgument] or
[ValidationError::IntegerOverflow] when the supplied layout is
invalid for the tensor’s physical buffer.
pub fn into_tensor(self) -> Result<Tensor, Error>
pub fn into_tensor(self) -> Result<Tensor, Error>
Consume an unshared compact value and return its physical owner.
§Errors
Returns [crate::Error::Unsupported] for a metadata-only view or
[crate::Error::RuntimeState] when another value retains the shared
owner.
pub fn as_tensor(&self) -> Option<&Tensor>
pub fn is_view(&self) -> bool
pub fn dtype(&self) -> DType
pub fn shape(&self) -> &[usize]
pub fn strides(&self) -> &[isize]
pub fn offset(&self) -> isize
pub fn tensor_view(&self) -> TensorView<'_>
pub fn tensor_read(&self) -> TensorRead<'_>
pub fn transpose_view(
self,
axes: impl AsRef<[usize]>,
) -> Result<TensorValue, Error>
pub fn transpose_view( self, axes: impl AsRef<[usize]>, ) -> Result<TensorValue, Error>
§Errors
Returns [crate::Error::Validation] with
[tenferro_tensor_core::ValidationError::InvalidPermutationLength],
[tenferro_tensor_core::ValidationError::AxisOutOfBounds], or
[tenferro_tensor_core::ValidationError::DuplicateAxis] when axes is
not a valid permutation of the value rank.
pub fn try_reshape_view(
self,
shape: impl IntoShapeVec,
) -> Result<TensorValue, TensorValueViewError>
pub fn try_reshape_view( self, shape: impl IntoShapeVec, ) -> Result<TensorValue, TensorValueViewError>
§Errors
Returns [crate::Error::Validation] with
[tenferro_tensor_core::ValidationError::NonContiguousViewAsSlice] when
the source is not compact column-major,
[tenferro_tensor_core::ValidationError::ShapeMismatch] (whose
[tenferro_tensor_core::ShapeMismatch::ReshapeElementCount] source
records the counts) when element counts differ,
[tenferro_tensor_core::ValidationError::IntegerOverflow] for shape
arithmetic overflow, or
[tenferro_tensor_core::ValidationError::ViewOutOfBounds] when the
reshaped view exceeds the backing buffer.
pub fn reshape_view(
self,
shape: impl IntoShapeVec,
) -> Result<TensorValue, Error>
pub fn reshape_view( self, shape: impl IntoShapeVec, ) -> Result<TensorValue, Error>
§Errors
Returns [crate::Error::Validation] with
[tenferro_tensor_core::ValidationError::NonContiguousViewAsSlice]
when the source is not compact, [tenferro_tensor_core::ValidationError::ShapeMismatch]
when element counts differ, or [tenferro_tensor_core::ValidationError::IntegerOverflow]
/ [tenferro_tensor_core::ValidationError::ViewOutOfBounds] for invalid
target-shape arithmetic or bounds.
pub fn slice_view(self, config: &SliceConfig) -> Result<TensorValue, Error>
pub fn slice_view(self, config: &SliceConfig) -> Result<TensorValue, Error>
§Errors
Returns [crate::Error::Validation] with
[tenferro_tensor_core::ValidationError::RankMismatch] when a slice
vector does not match the value rank,
[tenferro_tensor_core::ValidationError::InvalidArgument] when a bound
or stride cannot be represented or is invalid,
[tenferro_tensor_core::ValidationError::InvalidSliceStep] or
[tenferro_tensor_core::ValidationError::InvalidSliceBounds] for slice
parameters, [tenferro_tensor_core::ValidationError::IntegerOverflow]
for slice arithmetic overflow, or
[tenferro_tensor_core::ValidationError::ViewOutOfBounds] when the
result exceeds the backing buffer.
pub fn broadcast_in_dim_view(
self,
shape: impl IntoShapeVec,
dims: impl AsRef<[usize]>,
) -> Result<TensorValue, Error>
pub fn broadcast_in_dim_view( self, shape: impl IntoShapeVec, dims: impl AsRef<[usize]>, ) -> Result<TensorValue, Error>
§Errors
Returns [crate::Error::Validation] with
[tenferro_tensor_core::ValidationError::RankMismatch],
[tenferro_tensor_core::ValidationError::AxisOutOfBounds], or
[tenferro_tensor_core::ValidationError::DuplicateAxis] for invalid
dimension mappings,
[tenferro_tensor_core::ValidationError::ShapeDataLengthMismatch] for
incompatible extents,
[tenferro_tensor_core::ValidationError::ViewOutOfBounds] when the
result exceeds the backing buffer, or
[tenferro_tensor_core::ValidationError::IntegerOverflow] for layout
arithmetic overflow.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for TensorValue
impl !RefUnwindSafe for TensorValue
impl !UnwindSafe for TensorValue
impl Send for TensorValue
impl Sync for TensorValue
impl Unpin for TensorValue
impl UnsafeUnpin for TensorValue
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
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>
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>
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 more