pub struct TracedSliceBuilder<'a> { /* private fields */ }Expand description
Rank-preserving traced tensor slicing builder.
Unspecified axes are kept whole. Range selections become one Slice
operation; host-known position selections become Gather/index_select
operations.
§Examples
use tenferro_runtime::TracedTensor;
let x = TracedTensor::from_vec_col_major(vec![3, 4], vec![0.0_f64; 12]).unwrap();
let y = x.slice_builder().axis(0, 0..2).axis_step(1, 0..4, 2).apply().unwrap();
assert_eq!(y.try_concrete_shape(), Some(vec![2, 2]));Implementations§
Source§impl<'a> TracedSliceBuilder<'a>
impl<'a> TracedSliceBuilder<'a>
Sourcepub fn axis(self, axis: usize, range: Range<usize>) -> Self
pub fn axis(self, axis: usize, range: Range<usize>) -> Self
Add an exclusive-end range selection for one axis.
§Examples
use tenferro_runtime::TracedTensor;
let x = TracedTensor::from_vec_col_major(vec![4], vec![1.0_f64, 2.0, 3.0, 4.0]).unwrap();
let y = x.slice_builder().axis(0, 1..3).apply().unwrap();
assert_eq!(y.try_concrete_shape(), Some(vec![2]));Sourcepub fn axis_step(self, axis: usize, range: Range<usize>, step: usize) -> Self
pub fn axis_step(self, axis: usize, range: Range<usize>, step: usize) -> Self
Add an exclusive-end strided range selection for one axis.
§Examples
use tenferro_runtime::TracedTensor;
let x = TracedTensor::from_vec_col_major(vec![5], vec![1.0_f64, 2.0, 3.0, 4.0, 5.0]).unwrap();
let y = x.slice_builder().axis_step(0, 0..5, 2).apply().unwrap();
assert_eq!(y.try_concrete_shape(), Some(vec![3]));Sourcepub fn take_axis(self, axis: usize, indices: &[usize]) -> Self
pub fn take_axis(self, axis: usize, indices: &[usize]) -> Self
Add a host-known position selection for one axis.
§Examples
use tenferro_runtime::TracedTensor;
let x = TracedTensor::from_vec_col_major(vec![3], vec![1.0_f64, 2.0, 3.0]).unwrap();
let y = x.slice_builder().take_axis(0, &[2, 0]).apply().unwrap();
assert_eq!(y.try_concrete_shape(), Some(vec![2]));Sourcepub fn apply(self) -> Result<TracedTensor>
pub fn apply(self) -> Result<TracedTensor>
Build and apply the requested slice/take operations.
§Examples
use tenferro_runtime::TracedTensor;
let x = TracedTensor::from_vec_col_major(vec![4], vec![1.0_f64, 2.0, 3.0, 4.0]).unwrap();
let y = x.slice_builder().axis(0, 1..4).apply().unwrap();
assert_eq!(y.try_concrete_shape(), Some(vec![3]));Trait Implementations§
Source§impl<'a> Clone for TracedSliceBuilder<'a>
impl<'a> Clone for TracedSliceBuilder<'a>
Source§fn clone(&self) -> TracedSliceBuilder<'a>
fn clone(&self) -> TracedSliceBuilder<'a>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl<'a> Freeze for TracedSliceBuilder<'a>
impl<'a> !RefUnwindSafe for TracedSliceBuilder<'a>
impl<'a> Send for TracedSliceBuilder<'a>
impl<'a> Sync for TracedSliceBuilder<'a>
impl<'a> Unpin for TracedSliceBuilder<'a>
impl<'a> UnsafeUnpin for TracedSliceBuilder<'a>
impl<'a> !UnwindSafe for TracedSliceBuilder<'a>
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
Mutably borrows from an owned value. Read more