vortex_torch.indexer.elementwise_binary

Classes

Add([alpha, beta])

Affine combination \(\alpha x + \beta y\) (an Elementwise_Binary).

Elementwise_Binary([alpha, beta])

Binary elementwise op — combines two tensors pointwise (with broadcasting).

Maximum([alpha, beta])

Elementwise maximum (an Elementwise_Binary).

Minimum([alpha, beta])

Elementwise minimum (an Elementwise_Binary).

Multiply([alpha, beta])

Elementwise product (an Elementwise_Binary).

class Elementwise_Binary(alpha=1.0, beta=1.0)[source]

Bases: vOp

Binary elementwise op — combines two tensors pointwise (with broadcasting).

Math:
\[Z_{s,c,d} = g(X_{s,c,d},\, Y_{s,c,d};\, \alpha, \beta),\]

where \(g\) is fixed by the subclass (max / min / affine-sum / product / comparison) and the inner (C, D) axes broadcast.

__init__:

Elementwise_Binary(alpha=1.0, beta=1.0) — scalar parameters used by some ops (e.g. the affine sum \(\alpha x + \beta y\)).

__call__:

z = op(x, y, ctx=ctx)x / y [S, C, D] (broadcast on C, D); output [S, max(C_x,C_y), max(D_x,D_y)]. BATCHED iff both inputs are, else RAGGED.

Note:

use a concrete subclass — Maximum, Minimum, Add, Multiply, or a comparison mask (WhereGreater, WhereEqual, …).

Parameters:
class Maximum(alpha=1.0, beta=1.0)[source]

Bases: Elementwise_Binary

Elementwise maximum (an Elementwise_Binary).

Math:
\[Z_{s,c,d} = \max(X_{s,c,d},\, Y_{s,c,d}).\]
__init__:

Maximum(alpha=1.0, beta=1.0)alpha / beta unused.

Parameters:
class Minimum(alpha=1.0, beta=1.0)[source]

Bases: Elementwise_Binary

Elementwise minimum (an Elementwise_Binary).

Math:
\[Z_{s,c,d} = \min(X_{s,c,d},\, Y_{s,c,d}).\]
__init__:

Minimum(alpha=1.0, beta=1.0)alpha / beta unused.

Parameters:
class Add(alpha=1.0, beta=1.0)[source]

Bases: Elementwise_Binary

Affine combination \(\alpha x + \beta y\) (an Elementwise_Binary).

Math:
\[Z_{s,c,d} = \alpha\,X_{s,c,d} + \beta\,Y_{s,c,d}.\]
__init__:

Add(alpha=1.0, beta=1.0) — multipliers for \(x\) and \(y\) (defaults give \(x+y\)).

Parameters:
class Multiply(alpha=1.0, beta=1.0)[source]

Bases: Elementwise_Binary

Elementwise product (an Elementwise_Binary).

Math:
\[Z_{s,c,d} = X_{s,c,d}\cdot Y_{s,c,d}.\]
__init__:

Multiply(alpha=1.0, beta=1.0)alpha / beta unused.

Parameters:
class WhereEqual[source]

Bases: Elementwise_Binary

Comparison mask \(x = y\) (an Elementwise_Binary).

Math:
\[\begin{split}Z_{s,c,d} = \begin{cases} 0, & X_{s,c,d} = Y_{s,c,d}, \\ -\infty, & \text{otherwise}. \end{cases}\end{split}\]
__init__:

WhereEqual() — no arguments.

Note:

additive mask, intended to gate a score tensor before vortex_torch.indexer.Softmax / vortex_torch.indexer.topK().

class WhereNotEqual[source]

Bases: Elementwise_Binary

Comparison mask \(x \ne y\) (an Elementwise_Binary).

Math:
\[\begin{split}Z_{s,c,d} = \begin{cases} 0, & X_{s,c,d} \ne Y_{s,c,d}, \\ -\infty, & \text{otherwise}. \end{cases}\end{split}\]
__init__:

WhereNotEqual() — no arguments.

class WhereGreater[source]

Bases: Elementwise_Binary

Comparison mask \(x > y\) (an Elementwise_Binary).

Math:
\[\begin{split}Z_{s,c,d} = \begin{cases} 0, & X_{s,c,d} > Y_{s,c,d}, \\ -\infty, & \text{otherwise}. \end{cases}\end{split}\]
__init__:

WhereGreater() — no arguments.

class WhereGreaterEqual[source]

Bases: Elementwise_Binary

Comparison mask \(x \ge y\) (an Elementwise_Binary).

Math:
\[\begin{split}Z_{s,c,d} = \begin{cases} 0, & X_{s,c,d} \ge Y_{s,c,d}, \\ -\infty, & \text{otherwise}. \end{cases}\end{split}\]
__init__:

WhereGreaterEqual() — no arguments.

class WhereLess[source]

Bases: Elementwise_Binary

Comparison mask \(x < y\) (an Elementwise_Binary).

Math:
\[\begin{split}Z_{s,c,d} = \begin{cases} 0, & X_{s,c,d} < Y_{s,c,d}, \\ -\infty, & \text{otherwise}. \end{cases}\end{split}\]
__init__:

WhereLess() — no arguments.

class WhereLessEqual[source]

Bases: Elementwise_Binary

Comparison mask \(x \le y\) (an Elementwise_Binary).

Math:
\[\begin{split}Z_{s,c,d} = \begin{cases} 0, & X_{s,c,d} \le Y_{s,c,d}, \\ -\infty, & \text{otherwise}. \end{cases}\end{split}\]
__init__:

WhereLessEqual() — no arguments.