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§
Source§impl TensorValue
impl TensorValue
Sourcepub fn duplicate(&self) -> Result<Self>
pub fn duplicate(&self) -> Result<Self>
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) -> Self
Sourcepub fn from_parts(
tensor: Tensor,
shape: Vec<usize>,
strides: Vec<isize>,
offset: isize,
) -> Result<Self>
pub fn from_parts( tensor: Tensor, shape: Vec<usize>, strides: Vec<isize>, offset: isize, ) -> Result<Self>
§Errors
Returns ValidationError::InvalidArgument or
ValidationError::IntegerOverflow when the supplied layout is
invalid for the tensor’s physical buffer.
Sourcepub fn into_tensor(self) -> Result<Tensor>
pub fn into_tensor(self) -> Result<Tensor>
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<'_>
Sourcepub fn transpose_view(self, axes: impl AsRef<[usize]>) -> Result<Self>
pub fn transpose_view(self, axes: impl AsRef<[usize]>) -> Result<Self>
§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.
Sourcepub fn try_reshape_view(
self,
shape: impl IntoShapeVec,
) -> Result<Self, TensorValueViewError>
pub fn try_reshape_view( self, shape: impl IntoShapeVec, ) -> Result<Self, 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.
Sourcepub fn reshape_view(self, shape: impl IntoShapeVec) -> Result<Self>
pub fn reshape_view(self, shape: impl IntoShapeVec) -> Result<Self>
§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.
Sourcepub fn slice_view(self, config: &SliceConfig) -> Result<Self>
pub fn slice_view(self, config: &SliceConfig) -> Result<Self>
§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.
Sourcepub fn broadcast_in_dim_view(
self,
shape: impl IntoShapeVec,
dims: impl AsRef<[usize]>,
) -> Result<Self>
pub fn broadcast_in_dim_view( self, shape: impl IntoShapeVec, dims: impl AsRef<[usize]>, ) -> Result<Self>
§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