Trait rten_tensor::MutLayout

source ·
pub trait MutLayout: Layout + Clone {
Show 15 methods // Required methods fn from_shape(shape: Self::Index<'_>) -> Self; fn from_shape_and_strides( shape: Self::Index<'_>, strides: Self::Index<'_>, overlap: OverlapPolicy, ) -> Result<Self, FromDataError>; fn move_axis(&mut self, from: usize, to: usize); fn permuted(&self, order: Self::Index<'_>) -> Self; fn resize_dim(&mut self, dim: usize, size: usize); fn transposed(&self) -> Self; fn slice<const M: usize>( &self, range: &[SliceItem], ) -> (Range<usize>, NdLayout<M>); fn slice_dyn(&self, range: &[SliceItem]) -> (Range<usize>, DynLayout); fn squeezed(&self) -> DynLayout; fn split( &self, axis: usize, mid: usize, ) -> ((Range<usize>, Self), (Range<usize>, Self)); fn try_slice<R: IntoSliceItems>( &self, range: R, ) -> Result<(Range<usize>, DynLayout), SliceError>; // Provided methods fn index_axis( &self, axis: usize, index: usize, ) -> (Range<usize>, <Self as RemoveDim>::Output) where Self: RemoveDim { ... } fn reshaped_for_view<S: IntoLayout>( &self, shape: S, ) -> Result<S::Layout, ReshapeError> { ... } fn reshaped_for_copy<S: IntoLayout>( &self, shape: S, ) -> Result<S::Layout, ReshapeError> { ... } fn slice_axis( &self, axis: usize, range: Range<usize>, ) -> (Range<usize>, Self) { ... }
}
Expand description

MutLayout extends Layout with methods for creating, modifying and transforming layouts.

Required Methods§

source

fn from_shape(shape: Self::Index<'_>) -> Self

Create a new contiguous layout with a given shape.

source

fn from_shape_and_strides( shape: Self::Index<'_>, strides: Self::Index<'_>, overlap: OverlapPolicy, ) -> Result<Self, FromDataError>

Create a layout with custom strides.

The strides specify the offset gap between successive entries along a given axis. overlap controls whether the layout is allowed to map multiple indices to the same element. This can be true for immutable views, but must be false for tensors or views that are mutable.

source

fn move_axis(&mut self, from: usize, to: usize)

Move the axis at position from to to by swapping their strides.

source

fn permuted(&self, order: Self::Index<'_>) -> Self

Return a layout with the axes permuted according to the given order.

source

fn resize_dim(&mut self, dim: usize, size: usize)

source

fn transposed(&self) -> Self

Reverse the order of dimensions. This is equivalent to self.permuted([N-1, N-2, ... 0]).

source

fn slice<const M: usize>( &self, range: &[SliceItem], ) -> (Range<usize>, NdLayout<M>)

Slice the layout.

Returns a tuple of (offset_range, sliced_layout).

source

fn slice_dyn(&self, range: &[SliceItem]) -> (Range<usize>, DynLayout)

Slice the layout and return a dynamic rank layout.

Returns a tuple of (offset_range, sliced_layout).

source

fn squeezed(&self) -> DynLayout

Return a layout with all size-one dimensions removed.

source

fn split( &self, axis: usize, mid: usize, ) -> ((Range<usize>, Self), (Range<usize>, Self))

Split the layout along the given axis into two.

Returns a tuple of (left, right) where each item is an (offset_range, layout) tuple.

source

fn try_slice<R: IntoSliceItems>( &self, range: R, ) -> Result<(Range<usize>, DynLayout), SliceError>

Attempt to slice the layout or return an error if the range is invalid for the layout’s shape.

Provided Methods§

source

fn index_axis( &self, axis: usize, index: usize, ) -> (Range<usize>, <Self as RemoveDim>::Output)
where Self: RemoveDim,

Slice a layout by selecting a single entry from a given axis.

Returns an (offset_range, layout) tuple for the sliced layout.

source

fn reshaped_for_view<S: IntoLayout>( &self, shape: S, ) -> Result<S::Layout, ReshapeError>

Return a new layout formed by reshaping this one to shape.

This has the same requirements as reshaped_for_copy but also requires that the layout is contiguous.

source

fn reshaped_for_copy<S: IntoLayout>( &self, shape: S, ) -> Result<S::Layout, ReshapeError>

Return a new layout formed by reshaping this one to shape.

source

fn slice_axis(&self, axis: usize, range: Range<usize>) -> (Range<usize>, Self)

Slice the layout along a given axis.

Returns a tuple of (offset_range, sliced_layout).

Object Safety§

This trait is not object safe.

Implementors§