pub struct TensorMeta {
pub dtype: DType,
pub extents: Vec<ShapeExtent<SymDim>>,
}Expand description
Per-value tensor metadata used by AD rules.
Shape information is stored as per-axis ShapeExtent values. Callers must
explicitly choose whether they need an exact shape or only a known bound.
§Examples
use tenferro_ops::{SymDim, TensorMeta};
use tenferro_tensor::DType;
let meta = TensorMeta::exact(DType::F64, vec![SymDim::from(2usize), SymDim::from(3usize)]);
assert_eq!(meta.rank(), 2);Fields§
§dtype: DTypeElement dtype of the tensor value.
extents: Vec<ShapeExtent<SymDim>>Per-axis shape guarantees.
Implementations§
Source§impl TensorMeta
impl TensorMeta
Sourcepub fn exact(dtype: DType, shape: Vec<SymDim>) -> Self
pub fn exact(dtype: DType, shape: Vec<SymDim>) -> Self
Construct metadata whose every axis is exact.
§Examples
use tenferro_ops::{SymDim, TensorMeta};
use tenferro_tensor::DType;
let meta = TensorMeta::exact(DType::F64, vec![SymDim::from(4usize)]);
assert_eq!(meta.exact_shape(), Some(vec![SymDim::from(4usize)]));Sourcepub fn with_extents(dtype: DType, extents: Vec<ShapeExtent<SymDim>>) -> Self
pub fn with_extents(dtype: DType, extents: Vec<ShapeExtent<SymDim>>) -> Self
Construct metadata from per-axis extents.
§Examples
use tenferro_ops::{ShapeExtent, SymDim, TensorMeta};
use tenferro_tensor::DType;
let meta = TensorMeta::with_extents(
DType::F64,
vec![ShapeExtent::upper_bound(SymDim::from(8usize))],
);
assert_eq!(meta.exact_shape(), None);Sourcepub fn extents(&self) -> &[ShapeExtent<SymDim>]
pub fn extents(&self) -> &[ShapeExtent<SymDim>]
Return the per-axis shape guarantees.
§Examples
use tenferro_ops::{SymDim, TensorMeta};
use tenferro_tensor::DType;
let meta = TensorMeta::exact(DType::F64, vec![SymDim::from(4usize)]);
assert_eq!(meta.extents().len(), 1);Sourcepub fn exact_shape(&self) -> Option<Vec<SymDim>>
pub fn exact_shape(&self) -> Option<Vec<SymDim>>
Return the shape only when every axis is exact.
§Examples
use tenferro_ops::{ShapeExtent, SymDim, TensorMeta};
use tenferro_tensor::DType;
let meta = TensorMeta::with_extents(
DType::F64,
vec![ShapeExtent::upper_bound(SymDim::from(8usize))],
);
assert_eq!(meta.exact_shape(), None);Sourcepub fn bound_shape(&self) -> Option<Vec<SymDim>>
pub fn bound_shape(&self) -> Option<Vec<SymDim>>
Return one known bound per axis when every axis has a bound.
This is intentionally separate from TensorMeta::exact_shape: a bound
is not proof of the runtime size.
Trait Implementations§
Source§impl Clone for TensorMeta
impl Clone for TensorMeta
Source§fn clone(&self) -> TensorMeta
fn clone(&self) -> TensorMeta
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for TensorMeta
impl Debug for TensorMeta
Source§impl PartialEq for TensorMeta
impl PartialEq for TensorMeta
impl Eq for TensorMeta
impl StructuralPartialEq for TensorMeta
Auto Trait Implementations§
impl Freeze for TensorMeta
impl RefUnwindSafe for TensorMeta
impl Send for TensorMeta
impl Sync for TensorMeta
impl Unpin for TensorMeta
impl UnsafeUnpin for TensorMeta
impl UnwindSafe for TensorMeta
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