Core Transformer#
transformer
#
| CLASS | DESCRIPTION |
|---|---|
Transformer |
Base class for stateless data transformations. |
Classes#
Transformer()
#
Bases: Module, ABC
Base class for stateless data transformations.
For transformations that don't require fitting to data. Simpler than Estimator for pure transformation operations.
Unlike Estimator, Transformer does not have fit(), is_fitted,
or in_features/out_features tracking. It only provides the transform()
interface.
Examples of transformers:
- Normalization (L2, min-max, standardization)
- Feature extraction from frozen pre-trained models
- Data type conversions
- Reshaping operations
- Pre-computed transformations (PCA projection matrix)
Examples:
Basic usage with L2 normalization:
>>> import torch
>>> from spectre.core import Transformer
>>> class L2Normalizer(Transformer):
... def transform(self, X: torch.Tensor) -> torch.Tensor:
... return X / X.norm(dim=1, keepdim=True)
>>> normalizer = L2Normalizer()
>>> X = torch.randn(100, 10)
>>> X_normalized = normalizer.transform(X)
>>> # Can also use as callable
>>> X_normalized = normalizer(X)
>>> # Verify L2 norms are 1
>>> norms = X_normalized.norm(dim=1)
>>> torch.allclose(norms, torch.ones(100))
True
Projection with pre-computed matrix:
>>> class ProjectionTransformer(Transformer):
... def __init__(self, projection_matrix: torch.Tensor):
... super().__init__()
... self.register_buffer("projection_matrix", projection_matrix)
...
... def transform(self, X: torch.Tensor) -> torch.Tensor:
... return X @ self.projection_matrix
>>> P = torch.randn(10, 3)
>>> projector = ProjectionTransformer(P)
>>> X = torch.randn(100, 10)
>>> X_proj = projector.transform(X)
>>> X_proj.shape
torch.Size([100, 3])
| METHOD | DESCRIPTION |
|---|---|
transform |
Transform input data. |
inverse_transform |
Inverse transform input data. |
forward |
Forward pass (alias for transform). |
Functions#
transform(X: torch.Tensor) -> torch.Tensor
abstractmethod
#
Transform input data.
| PARAMETER | DESCRIPTION |
|---|---|
X
|
Input data to transform.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Tensor
|
Transformed data. |
Source code in spectre/core/transformer.py
inverse_transform(X: torch.Tensor) -> torch.Tensor
#
Inverse transform input data.
Subclasses should override this method if the transformation is invertible.
| PARAMETER | DESCRIPTION |
|---|---|
X
|
Input data to inverse transform.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Tensor
|
Inverse transformed data. |
| RAISES | DESCRIPTION |
|---|---|
NotImplementedError
|
If the transformation is not invertible or inverse not implemented. |
Source code in spectre/core/transformer.py
forward(X: torch.Tensor) -> torch.Tensor
#
Forward pass (alias for transform).
Makes Transformer compatible with torch.nn.Module pipelines.
| PARAMETER | DESCRIPTION |
|---|---|
X
|
Input data.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Tensor
|
Transformed data. |