Evaluate
Table and series evaluation
- ndmap.evaluate.compare(probe: list, other: list) bool [source]
Compare tables
- Parameters:
probe (Table) – tables to compare
other (Table) – tables to compare
- Return type:
bool
Examples
>>> import torch >>> from ndmap.derivative import derivative >>> def fn(x, y): ... x1, x2 = x ... y1, y2 = y ... return torch.stack([x1*(1 + y1), x2*(1 + y2)]) >>> x = torch.tensor([0.0, 0.0]) >>> y = torch.zeros_like(x) >>> t = derivative((2, 1), fn, x, y) >>> compare(t, t) True
- ndmap.evaluate.evaluate(series: dict[tuple[int, ...], torch.Tensor], delta: list[torch.Tensor], epsilon: float | None = None) torch.Tensor
Evaluate series representation at a given deviation delta
Note, input series is expected to represent a vector valued function For epsilon != None, fast evaluation is performed
- Parameters:
series (Series) – input series representation
delta (Delta) – delta deviation
epsilon (Optional[float], non-negative, default=None) – fast series evaluation / tolerance epsilon
- Return type:
Tensor
Examples
>>> import torch >>> from ndmap.derivative import derivative >>> from ndmap.series import series >>> def fn(x, y): ... x1, x2 = x ... y1, y2 = y ... return torch.stack([x1*(1 + y1), x2*(1 + y2)]) >>> x = torch.tensor([0.0, 0.0]) >>> y = torch.zeros_like(x) >>> t = derivative((2, 1), fn, x, y) >>> s = series((2, 2), (2, 1), t) >>> dx = 1.0E-3*torch.ones_like(x) >>> dy = 1.0E-3*torch.ones_like(x) >>> torch.allclose(fn(x + dx, y + dy), evaluate(s, [dx, dy]))
- ndmap.evaluate.table(dimension: tuple[int, ...], order: tuple[int, ...], series: dict[tuple[int, ...], torch.Tensor], *, epsilon: float | None = None, jacobian: Callable | None = None) list [source]
Generate derivative table representation from a given series representation
Note, table is generated by taking derivatives of evaluated series at zero deviation delta. For epsilon != None can be used for fast series evaluation, but can generate incorrect table
- Parameters:
dimension (tuple[int, ...], positive) – dimensions
order (tuple[int, ...], non-negative) – maximum derivative orders
series (Series) – input series representation
epsilon (Optional[float], non-negative, default=None) – fast series evaluation / tolerance epsilon
jacobian (Optional[Callable]) – torch.func.jacfwd (default) or torch.func.jacrev
- Return type:
Table
Examples
>>> import torch >>> from ndmap.derivative import derivative >>> from ndmap.series import series >>> def fn(x, y): ... x1, x2 = x ... y1, y2 = y ... return torch.stack([x1*(1 + y1), x2*(1 + y2)]) >>> x = torch.tensor([0.0, 0.0]) >>> y = torch.zeros_like(x) >>> t = derivative((2, 1), fn, x, y) >>> s = series((2, 2), (2, 1), t) >>> t = table((2, 2), (2, 1), s) >>> dx = 1.0E-3*torch.ones_like(x) >>> dy = 1.0E-3*torch.ones_like(x) >>> torch.allclose(fn(x + dx, y + dy), evaluate(t, [dx, dy])) True