pub struct Tensor { /* private fields */ }Expand description
Tensor is a concrete tensor in tract.
Implementations§
Source§impl Tensor
impl Tensor
Sourcepub unsafe fn uninitialized<T>(shape: &[usize]) -> Result<Tensor, Error>where
T: Datum,
pub unsafe fn uninitialized<T>(shape: &[usize]) -> Result<Tensor, Error>where
T: Datum,
Create an uninitialized tensor (dt as type paramater).
Sourcepub unsafe fn uninitialized_dt(
dt: DatumType,
shape: &[usize],
) -> Result<Tensor, Error>
pub unsafe fn uninitialized_dt( dt: DatumType, shape: &[usize], ) -> Result<Tensor, Error>
Create an uninitialized tensor (dt as regular parameter).
Sourcepub unsafe fn uninitialized_aligned<T>(
shape: &[usize],
alignment: usize,
) -> Result<Tensor, Error>where
T: Datum,
pub unsafe fn uninitialized_aligned<T>(
shape: &[usize],
alignment: usize,
) -> Result<Tensor, Error>where
T: Datum,
Create an uninitialized tensor with a given alignment (in bytes).
Sourcepub unsafe fn uninitialized_aligned_dt(
dt: DatumType,
shape: &[usize],
alignment: usize,
) -> Result<Tensor, Error>
pub unsafe fn uninitialized_aligned_dt( dt: DatumType, shape: &[usize], alignment: usize, ) -> Result<Tensor, Error>
Create an uninitialized tensor with a given alignment (in bytes).
pub fn stack_tensors( axis: usize, tensors: &[impl Borrow<Tensor>], ) -> Result<Tensor, Error>
pub fn clear<T>(&mut self) -> Result<(), Error>
pub fn zero<T>(shape: &[usize]) -> Result<Tensor, Error>
pub fn zero_scalar<T>() -> Result<Tensor, Error>
pub fn zero_scalar_dt(dt: DatumType) -> Result<Tensor, Error>
pub fn zero_dt(dt: DatumType, shape: &[usize]) -> Result<Tensor, Error>
pub fn fill_t<T>(&mut self, value: T) -> Result<(), Error>
pub fn zero_aligned_dt( dt: DatumType, shape: &[usize], alignment: usize, ) -> Result<Tensor, Error>
pub fn zero_aligned<T>( shape: &[usize], alignment: usize, ) -> Result<Tensor, Error>
Sourcepub fn from_shape<T>(shape: &[usize], data: &[T]) -> Result<Tensor, Error>
pub fn from_shape<T>(shape: &[usize], data: &[T]) -> Result<Tensor, Error>
Create a tensor with a given shape and a slice of elements. The data is copied and aligned to size of T.
Sourcepub fn from_shape_align<T>(
shape: &[usize],
data: &[T],
align: usize,
) -> Result<Tensor, Error>
pub fn from_shape_align<T>( shape: &[usize], data: &[T], align: usize, ) -> Result<Tensor, Error>
Create a tensor with a given shape and a slice of elements. The data is copied and aligned to given alignment.
Sourcepub unsafe fn from_raw<T>(
shape: &[usize],
content: &[u8],
) -> Result<Tensor, Error>where
T: Datum,
pub unsafe fn from_raw<T>(
shape: &[usize],
content: &[u8],
) -> Result<Tensor, Error>where
T: Datum,
Create a tensor from raw data.
It copies the data, aligning it to the size of T.
pub unsafe fn from_raw_aligned<T>(
shape: &[usize],
content: &[u8],
align: usize,
) -> Result<Tensor, Error>where
T: Datum,
pub unsafe fn from_raw_dt( dt: DatumType, shape: &[usize], content: &[u8], ) -> Result<Tensor, Error>
pub unsafe fn from_raw_dt_align( dt: DatumType, shape: &[usize], content: &[u8], align: usize, ) -> Result<Tensor, Error>
pub unsafe fn from_slice_align<T>(
content: &[T],
align: usize,
) -> Result<Tensor, Error>where
T: Datum,
Sourcepub unsafe fn set_shape_unchecked(&mut self, shape: &[usize])
pub unsafe fn set_shape_unchecked(&mut self, shape: &[usize])
Force the tensor shape, no consistency check.
Sourcepub unsafe fn set_geometry_unchecked(
&mut self,
shape: &[usize],
strides: &[isize],
)
pub unsafe fn set_geometry_unchecked( &mut self, shape: &[usize], strides: &[isize], )
Force the tensor shape and strides, no consistency check.
pub fn permute_axes(self, axes: &[usize]) -> Result<Tensor, Error>
pub fn move_axis(self, from: usize, to: usize) -> Result<Tensor, Error>
pub fn collapse_axis_with_next(self, axis: usize) -> Tensor
pub fn split_axis(self, axis: usize, outer_dim: usize) -> Result<Tensor, Error>
pub fn insert_axis(&mut self, axis: usize) -> Result<(), Error>
pub fn remove_axis(&mut self, axis: usize) -> Result<(), Error>
pub fn broadcast_into_rank(self, rank: usize) -> Result<Tensor, Error>
pub fn broadcast_to_rank(&mut self, rank: usize) -> Result<(), Error>
pub fn broadcast_scalar_to_shape( &self, shape: &[usize], ) -> Result<Tensor, Error>
pub fn broadcast_to_shape(&self, shape: &[usize]) -> Result<Tensor, Error>
pub fn broadcast_vector_to_shape( &self, shape: &[usize], axis: usize, ) -> Result<Tensor, Error>
pub fn assign_slice( &mut self, range: impl RangeBounds<usize>, src: &Tensor, src_range: impl RangeBounds<usize>, axis: usize, ) -> Result<(), Error>
pub unsafe fn assign_slice_unchecked( &mut self, range: impl RangeBounds<usize>, src: &Tensor, src_range: impl RangeBounds<usize>, axis: usize, )
Sourcepub fn datum_type(&self) -> DatumType
pub fn datum_type(&self) -> DatumType
Get the datum type of the tensor.
Sourcepub unsafe fn set_datum_type(&mut self, dt: DatumType)
pub unsafe fn set_datum_type(&mut self, dt: DatumType)
Set the datum type of the tensor.
Sourcepub fn dump(&self, force_full: bool) -> Result<String, Error>
pub fn dump(&self, force_full: bool) -> Result<String, Error>
Dump the tensor in a human readable form.
force_full will force the tensor to be dump in full even if it is big.
Sourcepub fn close_enough(
&self,
other: &Tensor,
approx: impl Into<Approximation> + Debug,
) -> Result<(), Error>
pub fn close_enough( &self, other: &Tensor, approx: impl Into<Approximation> + Debug, ) -> Result<(), Error>
Compare two tensors, allowing for rounding errors.
Sourcepub fn into_array<D>(
self,
) -> Result<ArrayBase<OwnedRepr<D>, Dim<IxDynImpl>>, Error>where
D: Datum,
pub fn into_array<D>(
self,
) -> Result<ArrayBase<OwnedRepr<D>, Dim<IxDynImpl>>, Error>where
D: Datum,
Transform the tensor into a ndarray::Array.
Sourcepub unsafe fn into_array_unchecked<D>(
self,
) -> ArrayBase<OwnedRepr<D>, Dim<IxDynImpl>>where
D: Datum,
pub unsafe fn into_array_unchecked<D>(
self,
) -> ArrayBase<OwnedRepr<D>, Dim<IxDynImpl>>where
D: Datum,
Transform the tensor into a ndarray::Array.
Sourcepub fn to_array_view<D>(
&self,
) -> Result<ArrayBase<ViewRepr<&D>, Dim<IxDynImpl>>, Error>where
D: Datum,
pub fn to_array_view<D>(
&self,
) -> Result<ArrayBase<ViewRepr<&D>, Dim<IxDynImpl>>, Error>where
D: Datum,
Transform the data as a ndarray::Array.
Sourcepub fn to_array_view_mut<D>(
&mut self,
) -> Result<ArrayBase<ViewRepr<&mut D>, Dim<IxDynImpl>>, Error>where
D: Datum,
pub fn to_array_view_mut<D>(
&mut self,
) -> Result<ArrayBase<ViewRepr<&mut D>, Dim<IxDynImpl>>, Error>where
D: Datum,
Transform the data as a mutable ndarray::Array.
Sourcepub unsafe fn to_array_view_unchecked<D>(
&self,
) -> ArrayBase<ViewRepr<&D>, Dim<IxDynImpl>>where
D: Datum,
pub unsafe fn to_array_view_unchecked<D>(
&self,
) -> ArrayBase<ViewRepr<&D>, Dim<IxDynImpl>>where
D: Datum,
Transform the data as a ndarray::Array.
Sourcepub unsafe fn to_array_view_mut_unchecked<D>(
&mut self,
) -> ArrayBase<ViewRepr<&mut D>, Dim<IxDynImpl>>where
D: Datum,
pub unsafe fn to_array_view_mut_unchecked<D>(
&mut self,
) -> ArrayBase<ViewRepr<&mut D>, Dim<IxDynImpl>>where
D: Datum,
Transform the data as a mutable ndarray::Array.
Sourcepub fn as_ptr<D>(&self) -> Result<*const D, Error>where
D: Datum,
pub fn as_ptr<D>(&self) -> Result<*const D, Error>where
D: Datum,
Access the data as a pointer.
Sourcepub unsafe fn as_ptr_unchecked<D>(&self) -> *const Dwhere
D: Datum,
pub unsafe fn as_ptr_unchecked<D>(&self) -> *const Dwhere
D: Datum,
Access the data as a pointer.
Sourcepub unsafe fn as_ptr_mut_unchecked<D>(&mut self) -> *mut Dwhere
D: Datum,
pub unsafe fn as_ptr_mut_unchecked<D>(&mut self) -> *mut Dwhere
D: Datum,
Access the data as a pointer.
Sourcepub fn as_ptr_mut<D>(&mut self) -> Result<*mut D, Error>where
D: Datum,
pub fn as_ptr_mut<D>(&mut self) -> Result<*mut D, Error>where
D: Datum,
Access the data as a mutable pointer.
Sourcepub fn as_slice_mut<D>(&mut self) -> Result<&mut [D], Error>where
D: Datum,
pub fn as_slice_mut<D>(&mut self) -> Result<&mut [D], Error>where
D: Datum,
Access the data as a mutable slice.
Sourcepub unsafe fn as_slice_unchecked<D>(&self) -> &[D]where
D: Datum,
pub unsafe fn as_slice_unchecked<D>(&self) -> &[D]where
D: Datum,
Access the data as a slice.
Sourcepub unsafe fn as_slice_mut_unchecked<D>(&mut self) -> &mut [D]where
D: Datum,
pub unsafe fn as_slice_mut_unchecked<D>(&mut self) -> &mut [D]where
D: Datum,
Access the data as a mutable slice.
Sourcepub fn to_scalar_tensor(&self) -> Result<Tensor, Error>
pub fn to_scalar_tensor(&self) -> Result<Tensor, Error>
Make the tensor a scalar tensor (assumes it contains a single value).
Sourcepub unsafe fn to_scalar_unchecked<D>(&self) -> &Dwhere
D: Datum,
pub unsafe fn to_scalar_unchecked<D>(&self) -> &Dwhere
D: Datum,
Access the data as a scalar.
Sourcepub fn to_scalar_mut<D>(&mut self) -> Result<&mut D, Error>where
D: Datum,
pub fn to_scalar_mut<D>(&mut self) -> Result<&mut D, Error>where
D: Datum,
Mutable access the data as a scalar.
Sourcepub unsafe fn to_scalar_mut_unchecked<D>(&mut self) -> &mut Dwhere
D: Datum,
pub unsafe fn to_scalar_mut_unchecked<D>(&mut self) -> &mut Dwhere
D: Datum,
Mutable access the data as a scalar.
pub fn as_bytes(&self) -> &[u8] ⓘ
pub fn as_bytes_mut(&mut self) -> &mut [u8] ⓘ
pub fn is_uniform(&self) -> bool
pub fn as_uniform(&self) -> Option<Tensor>
pub fn is_all_zero(&self) -> Result<bool, Error>
pub fn is_zero(&self) -> Result<bool, Error>
Sourcepub fn cast_to<D>(&self) -> Result<Cow<'_, Tensor>, Error>where
D: Datum,
pub fn cast_to<D>(&self) -> Result<Cow<'_, Tensor>, Error>where
D: Datum,
Optionnaly convert data to a tensor for a new DatumType.
Sourcepub fn cast_to_dt(&self, dst_dt: DatumType) -> Result<Cow<'_, Tensor>, Error>
pub fn cast_to_dt(&self, dst_dt: DatumType) -> Result<Cow<'_, Tensor>, Error>
Optionnaly convert data to a tensor for a new DatumType.
Sourcepub fn cast_to_scalar<D>(&self) -> Result<D, Error>
pub fn cast_to_scalar<D>(&self) -> Result<D, Error>
Access the data as a scalar, after a cast.
Sourcepub fn nth(&self, nth: usize) -> Result<Tensor, Error>
pub fn nth(&self, nth: usize) -> Result<Tensor, Error>
Access the nth element of the tensor, returned as a 0-rank Tensor
pub fn deep_clone(&self) -> Tensor
pub fn slice( &self, axis: usize, start: usize, end: usize, ) -> Result<Tensor, Error>
pub fn view(&self) -> TensorView<'_>
pub fn view_at_prefix(&self, prefix: &[usize]) -> Result<TensorView<'_>, Error>
pub fn view_offsetting(&self, coords: &[usize]) -> Result<TensorView<'_>, Error>
pub unsafe fn view_offsetting_unchecked( &self, coords: &[usize], ) -> TensorView<'_>
pub fn view_mut(&mut self) -> TensorView<'_>
pub fn view_at_prefix_mut( &mut self, prefix: &[usize], ) -> Result<TensorView<'_>, Error>
pub fn view_offsetting_mut( &mut self, coords: &[usize], ) -> Result<TensorView<'_>, Error>
Sourcepub fn offset_u8_as_i8(self: &Arc<Tensor>) -> Arc<Tensor> ⓘ
pub fn offset_u8_as_i8(self: &Arc<Tensor>) -> Arc<Tensor> ⓘ
Offsets the tensor as an i8 type if it’s an u8 type, otherwise passes it unchanged.
Sourcepub fn offset_i8_as_u8(self: &Arc<Tensor>) -> Arc<Tensor> ⓘ
pub fn offset_i8_as_u8(self: &Arc<Tensor>) -> Arc<Tensor> ⓘ
Offsets the tensor as an u8 type if it’s an i8 type, otherwise passes it unchanged.
pub fn to_aligned_default(&self) -> Result<Tensor, Error>
pub fn natural_strides(shape: &[usize]) -> SmallVec<[isize; 4]>
pub fn into_blob(self) -> Result<Blob, Error>
Trait Implementations§
impl Eq for Tensor
Source§impl From<Tensor> for InferenceFact
impl From<Tensor> for InferenceFact
Source§fn from(t: Tensor) -> InferenceFact
fn from(t: Tensor) -> InferenceFact
Source§impl IntoArcTensor for Tensor
impl IntoArcTensor for Tensor
Source§impl IntoTValue for Tensor
impl IntoTValue for Tensor
fn into_tvalue(self) -> TValue
Source§impl IntoTensor for Tensor
impl IntoTensor for Tensor
Source§fn into_tensor(self) -> Tensor
fn into_tensor(self) -> Tensor
impl Send for Tensor
impl Sync for Tensor
Source§impl TryFrom<&Tensor> for TensorProto
impl TryFrom<&Tensor> for TensorProto
Source§fn try_from(from: &Tensor) -> TractResult<TensorProto>
fn try_from(from: &Tensor) -> TractResult<TensorProto>
Source§impl TryFrom<&TensorProto> for Tensor
impl TryFrom<&TensorProto> for Tensor
Source§fn try_from(t: &TensorProto) -> TractResult<Tensor>
fn try_from(t: &TensorProto) -> TractResult<Tensor>
Auto Trait Implementations§
impl Freeze for Tensor
impl RefUnwindSafe for Tensor
impl Unpin for Tensor
impl UnsafeUnpin for Tensor
impl UnwindSafe for Tensor
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> CloneAny for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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