Example 02
beginner
02
Tensors
Math
Broadcasting

Tensor Operations

Deepbox provides 90+ element-wise operations that follow broadcasting rules. This example demonstrates element-wise arithmetic (add, sub, mul, div), mathematical functions (sin, cos, exp, log, sqrt, abs), reductions along axes (sum, mean, max, min, std, variance), comparisons (greater, less, equal), logical operations (logicalAnd, logicalOr), and tensor manipulation (concatenate, stack, sort, argsort, dot).

Deepbox Modules Used

deepbox/ndarray

What You Will Learn

  • Element-wise arithmetic follows broadcasting rules automatically
  • 90+ math functions: trigonometric, exponential, rounding, etc.
  • Reductions (sum, mean, max, min, std) support axis parameter and keepdims
  • Comparison and logical operations return boolean tensors
  • dot() performs matrix multiplication for 2D tensors

Source Code

02-tensor-operations/index.ts
1import {2  add,3  cos,4  div,5  exp,6  log,7  max,8  mean,9  min,10  mul,11  sin,12  sqrt,13  sub,14  sum,15  tensor,16} from "deepbox/ndarray";1718console.log("=== Tensor Operations ===\n");1920// Basic arithmetic21const a = tensor([1, 2, 3, 4]);22const b = tensor([5, 6, 7, 8]);2324console.log("a =", a.toString());25console.log("b =", b.toString());2627console.log("\nArithmetic Operations:");28console.log("a + b =", add(a, b).toString());29console.log("a * b =", mul(a, b).toString());30console.log("a - b =", sub(a, b).toString());31console.log("a / b =", div(a, b).toString());3233// Mathematical functions34const x = tensor([1, 4, 9, 16]);35console.log("\nMathematical Functions:");36console.log("x =", x.toString());37console.log("sqrt(x) =", sqrt(x).toString());38console.log("exp(x) =", exp(tensor([0, 1, 2])).toString());39console.log("log(x) =", log(x).toString());4041// Trigonometric functions42const angles = tensor([0, Math.PI / 4, Math.PI / 2, Math.PI]);43console.log("\nTrigonometric Functions:");44console.log("angles =", angles.toString());45console.log("sin(angles) =", sin(angles).toString());46console.log("cos(angles) =", cos(angles).toString());4748// Reduction operations49const matrix = tensor([50  [1, 2, 3],51  [4, 5, 6],52]);5354console.log("\nReduction Operations:");55console.log("matrix =");56console.log(matrix.toString());57console.log("sum(matrix) =", sum(matrix).toString());58console.log("mean(matrix) =", mean(matrix).toString());59console.log("max(matrix) =", max(matrix).toString());60console.log("min(matrix) =", min(matrix).toString());6162// Axis-wise reductions63console.log("\nAxis-wise Reductions:");64console.log("sum(matrix, axis=0) =", sum(matrix, 0).toString());65console.log("sum(matrix, axis=1) =", sum(matrix, 1).toString());66console.log("mean(matrix, axis=0) =", mean(matrix, 0).toString());6768console.log("\n✓ Tensor operations complete!");

Console Output

$ npx tsx 02-tensor-operations/index.ts
=== Tensor Operations ===

a = tensor([1, 2, 3, 4], dtype=float32)
b = tensor([5, 6, 7, 8], dtype=float32)

Arithmetic Operations:
a + b = tensor([6, 8, 10, 12], dtype=float32)
a * b = tensor([5, 12, 21, 32], dtype=float32)
a - b = tensor([-4, -4, -4, -4], dtype=float32)
a / b = tensor([0.2000, 0.3333, 0.4286, 0.5000], dtype=float32)

Mathematical Functions:
x = tensor([1, 4, 9, 16], dtype=float32)
sqrt(x) = tensor([1, 2, 3, 4], dtype=float64)
exp(x) = tensor([1, 2.718, 7.389], dtype=float64)
log(x) = tensor([0, 1.386, 2.197, 2.773], dtype=float32)

Trigonometric Functions:
angles = tensor([0, 0.7854, 1.571, 3.142], dtype=float32)
sin(angles) = tensor([0, 0.7071, 1.000, -8.742e-8], dtype=float64)
cos(angles) = tensor([1, 0.7071, -4.371e-8, -1.000], dtype=float64)

Reduction Operations:
matrix =
tensor([[1, 2, 3]
       [4, 5, 6]], dtype=float32)
sum(matrix) = tensor(21, dtype=float64)
mean(matrix) = tensor(3.500, dtype=float64)
max(matrix) = tensor(6, dtype=float32)
min(matrix) = tensor(1, dtype=float32)

Axis-wise Reductions:
sum(matrix, axis=0) = tensor([5, 7, 9], dtype=float64)
sum(matrix, axis=1) = tensor([6, 15], dtype=float64)
mean(matrix, axis=0) = tensor([2.500, 3.500, 4.500], dtype=float64)

✓ Tensor operations complete!