← Back

Module tensor

enum DType

Source: tensor.joule:14

fn size_bytes(self) -> usize

Size in bytes

Source: tensor.joule:41

fn is_float(self) -> bool

Check if floating point

Source: tensor.joule:52

fn is_int(self) -> bool

Check if integer

Source: tensor.joule:60

enum Device

Source: tensor.joule:71

fn default() -> Self

Get the default device (CPU)

Source: tensor.joule:80

fn best_available() -> Self

Get the best available accelerator

Source: tensor.joule:85

fn is_available(self) -> bool

Check if device is available

Source: tensor.joule:103

struct Tensor

N-dimensional tensor

Source: tensor.joule:123

enum TensorStorage

Internal storage for tensor data

Source: tensor.joule:145

trait GradFn

Gradient function trait for autograd

Source: tensor.joule:152

fn backward(&self, grad: &Tensor) -> Vec<Tensor>;

Source: tensor.joule:153

fn zeros(shape: &[usize]) -> Self

Create a new tensor filled with zeros

Source: tensor.joule:162

fn zeros_with_dtype(shape: &[usize], dtype: DType) -> Self

Create a new tensor filled with zeros of specified dtype

Source: tensor.joule:167

fn ones(shape: &[usize]) -> Self

Create a new tensor filled with ones

Source: tensor.joule:185

fn empty(shape: &[usize]) -> Self

Create a new tensor with uninitialized values

Source: tensor.joule:192

fn from_slice<T: TensorElement>(data: &[T], shape: &[usize]) -> Self

Create a new tensor from a slice

Source: tensor.joule:197

fn from_vec<T: TensorElement>(data: Vec<T>) -> Self

Create a 1D tensor from a Vec

Source: tensor.joule:223

fn eye(n: usize) -> Self

Create an identity matrix

Source: tensor.joule:229

fn arange(start: f64, end: f64, step: f64) -> Self

Create a tensor with values from start to end

Source: tensor.joule:238

fn linspace(start: f64, end: f64, steps: usize) -> Self

Create a tensor with evenly spaced values

Source: tensor.joule:250

fn rand(shape: &[usize]) -> Self

Create a tensor with random values from uniform distribution [0, 1)

Source: tensor.joule:259

fn randn(shape: &[usize]) -> Self

Create a tensor with random values from normal distribution

Source: tensor.joule:269

fn shape(&self) -> &[usize]

Get shape

Source: tensor.joule:282

fn ndim(&self) -> usize

Get number of dimensions

Source: tensor.joule:287

fn numel(&self) -> usize

Get total number of elements

Source: tensor.joule:292

fn dtype(&self) -> DType

Get data type

Source: tensor.joule:297

fn device(&self) -> Device

Get device

Source: tensor.joule:302

fn requires_grad(&self) -> bool

Check if tensor requires gradient

Source: tensor.joule:307

fn set_requires_grad(&mut self, requires_grad: bool)

Set requires_grad

Source: tensor.joule:312

fn grad(&self) -> Option<&Tensor>

Get gradient if available

Source: tensor.joule:317

fn is_contiguous(&self) -> bool

Check if tensor is contiguous in memory

Source: tensor.joule:322

fn to(&self, device: Device) -> Self

Source: tensor.joule:333

fn to_gpu(&self, device_idx: u32) -> Self

Source: tensor.joule:355

fn to_cpu(&self) -> Self

Source: tensor.joule:377

fn as_cpu_slice(&self) -> &[u8]

Source: tensor.joule:399

fn get_flat(&self, idx: usize) -> f32

Get element at flat index (as f32)

Source: tensor.joule:411

fn set_flat(&mut self, idx: usize, value: f32)

Set element at flat index

Source: tensor.joule:432

fn get_2d(&self, i: usize, j: usize) -> f32

Get element at 2D index

Source: tensor.joule:453

fn set_2d(&mut self, i: usize, j: usize, value: f32)

Set element at 2D index

Source: tensor.joule:459

fn fill_(&mut self, value: f32)

Fill tensor with value

Source: tensor.joule:465

fn reshape(&self, new_shape: &[usize]) -> Self

Reshape tensor (returns a view if possible)

Source: tensor.joule:476

fn contiguous(&self) -> Self

Make tensor contiguous in memory

Source: tensor.joule:500

fn transpose(&self) -> Self

Transpose (swap last two dimensions)

Source: tensor.joule:513

fn permute(&self, dims: &[usize]) -> Self

Permute dimensions

Source: tensor.joule:537

fn squeeze(&self) -> Self

Squeeze dimensions of size 1

Source: tensor.joule:557

fn unsqueeze(&self, dim: usize) -> Self

Unsqueeze - add dimension of size 1 at position

Source: tensor.joule:566

fn add(&self, other: &Tensor) -> Tensor

Source: tensor.joule:578

fn sub(&self, other: &Tensor) -> Tensor

Source: tensor.joule:584

fn mul(&self, other: &Tensor) -> Tensor

Source: tensor.joule:590

fn div(&self, other: &Tensor) -> Tensor

Source: tensor.joule:596

fn matmul(&self, other: &Tensor) -> Tensor

Source: tensor.joule:602

fn sum(&self) -> Tensor

Sum all elements

Source: tensor.joule:647

fn mean(&self) -> Tensor

Mean of all elements

Source: tensor.joule:656

fn max(&self) -> Tensor

Maximum element

Source: tensor.joule:662

fn min(&self) -> Tensor

Minimum element

Source: tensor.joule:672

fn exp(&self) -> Tensor

Element-wise exponential

Source: tensor.joule:682

fn log(&self) -> Tensor

Element-wise natural logarithm

Source: tensor.joule:687

fn sqrt(&self) -> Tensor

Element-wise square root

Source: tensor.joule:692

fn pow(&self, exp: f32) -> Tensor

Element-wise power

Source: tensor.joule:697

fn abs(&self) -> Tensor

Element-wise absolute value

Source: tensor.joule:702

fn neg(&self) -> Tensor

Element-wise negation

Source: tensor.joule:707

fn clamp(&self, min: f32, max: f32) -> Tensor

Clamp values to range

Source: tensor.joule:712

fn relu(&self) -> Tensor

ReLU activation

Source: tensor.joule:721

fn sigmoid(&self) -> Tensor

Sigmoid activation

Source: tensor.joule:726

fn tanh(&self) -> Tensor

Tanh activation

Source: tensor.joule:731

fn gelu(&self) -> Tensor

GELU activation

Source: tensor.joule:736

fn softmax(&self, dim: i32) -> Tensor

Softmax along last dimension

Source: tensor.joule:744

fn compute_strides(shape: &[usize]) -> Vec<usize>

Source: tensor.joule:760

fn binary_op(a: &Tensor, b: &Tensor, f: fn(f32, f32) -> f32, _name: &str) -> Tensor

Source: tensor.joule:768

fn unary_op(a: &Tensor, f: fn(f32) -> f32, _name: &str) -> Tensor

Source: tensor.joule:779

trait TensorElement: Copy

Source: tensor.joule:791

fn dtype() -> DType;

Source: tensor.joule:792

fn clone(&self) -> Self

Source: tensor.joule:807

fn clone(&self) -> Self

Source: tensor.joule:824

fn add(self, other: &Tensor) -> Tensor

Source: tensor.joule:845

fn sub(self, other: &Tensor) -> Tensor

Source: tensor.joule:852

fn mul(self, other: &Tensor) -> Tensor

Source: tensor.joule:859

fn div(self, other: &Tensor) -> Tensor

Source: tensor.joule:866

fn neg(self) -> Tensor

Source: tensor.joule:873