Skip to content
heliaEDGE
Reference
HELIA

metaformer

MetaFormer: Meta-Learning with Transformers

Section titled “MetaFormer: Meta-Learning with Transformers”

MetaFormer is a transformer-based model that incorporates both spatial mixing and channel mixing blocks. The architecture is designed to learn from few examples and generalize to new tasks.

For more info, refer to the original paper MetaFormer: Meta-Learning with Transformers.

Parameters are in helia_edge.models.metaformer_params.

Functions

Name Description
build MetaFormer model from MetaFormerParams
patch_embedding Patch embedding layer
pool_token_mixer Token mixer using average pooling
conv_token_mixer Token mixer using separable convolution
attention_token_mixer Token mixer using multi-head attention
mlp_channel_mixer Channel mixer using MLP via 1x1 convolutions
metaformer_block Metaformer block
metaformer_layer Metaformer functional layer

Machine-readable model

function

Patch embedding layer using 2D convolution

helia_edge/models/metaformer.py:30

patch_embedding(
embed_dim: int,
patch_shape: tuple[int, int],
stride_shape: tuple[int, int] | None = None,
padding: str = 'same',
) -> keras.layers.Layer

Patch embedding layer using 2D convolution

Parameters of patch_embedding
NameTypeDefaultDescription
embed_dimintRequiredEmbedding dimension
patch_shapetuple[int, int]RequiredPatch shape
stride_shapetuple[int, int]NoneStride shape. Defaults to None.
paddingstr'same'Padding. Defaults to 'same'.
function

Token mixer using average pooling

helia_edge/models/metaformer.py:56

pool_token_mixer(pool_size: tuple[int, int] = (2, 2)) -> keras.layers.Layer

Token mixer using average pooling

Parameters of pool_token_mixer
NameTypeDefaultDescription
pool_sizetuple[int, int](2, 2)Pool size. Defaults to (2, 2).
Returns of pool_token_mixer
TypeDescription
keras.layers.Layerkeras.layers.Layer: Token mixer layer
function

Token mixer using separable convolution

helia_edge/models/metaformer.py:84

conv_token_mixer(
embed_dim: int,
kernel_size: tuple[int, int] = (3, 3),
strides: tuple[int, int] = (1, 1),
) -> keras.Layer

Token mixer using separable convolution

Parameters of conv_token_mixer
NameTypeDefaultDescription
embed_dimintRequiredEmbedding dimension
kernel_sizetuple[int, int](3, 3)Kernel size. Defaults to (3, 3).
stridestuple[int, int](1, 1)Strides. Defaults to (1, 1).
Returns of conv_token_mixer
TypeDescription
keras.Layerkeras.layers.Layer: Token mixer layer
function

Token mixer using multi-head attention

helia_edge/models/metaformer.py:115

attention_token_mixer(embed_dim: int, num_heads: int, dropout: float = 0.1) -> keras.layers.Layer

Token mixer using multi-head attention

Parameters of attention_token_mixer
NameTypeDefaultDescription
embed_dimintRequiredEmbedding dimension
num_headsintRequiredNumber of heads
dropoutfloat0.1Dropout rate. Defaults to 0.1.
Returns of attention_token_mixer
TypeDescription
keras.layers.Layerkeras.layers.Layer: Token mixer layer
function

Channel mixer using MLP via 1x1 convolutions

helia_edge/models/metaformer.py:151

mlp_channel_mixer(embed_dim: int, ratio: int = 4, activation: str = 'gelu', dropout: float = 0) -> keras.Layer

Channel mixer using MLP via 1x1 convolutions

Parameters of mlp_channel_mixer
NameTypeDefaultDescription
embed_dimintRequiredEmbedding dimension
ratioint4Expansion ratio. Defaults to 4.
activationstr'gelu'Activation function. Defaults to "gelu".
dropoutfloat0Dropout rate. Defaults to 0.
Returns of mlp_channel_mixer
TypeDescription
keras.Layerkeras.layers.Layer: Channel mixer layer
function

Metaformer block

helia_edge/models/metaformer.py:194

metaformer_block(
token_mixer: keras.layers.Layer | None = None,
channel_mixer: keras.layers.Layer | None = None,
name: str = 'mf_block',
) -> keras.layers.Layer

Metaformer block

Parameters of metaformer_block
NameTypeDefaultDescription
token_mixerkeras.layers.LayerNoneToken mixer layer. Defaults to None.
channel_mixerkeras.layers.LayerNoneChannel mixer layer. Defaults to None.
namestr'mf_block'Block name. Defaults to 'mf_block'.
Returns of metaformer_block
TypeDescription
keras.layers.Layerkeras.layers.Layer: Metaformer block
function

MetaFormer functional layer

helia_edge/models/metaformer.py:242

metaformer_layer(x: keras.KerasTensor, params: MetaFormerParams) -> keras.KerasTensor

MetaFormer functional layer

Parameters of metaformer_layer
NameTypeDefaultDescription
xkeras.KerasTensorRequiredInput tensor
paramsMetaFormerParamsRequiredModel parameters.
Returns of metaformer_layer
TypeDescription
keras.KerasTensorkeras.KerasTensor: Output tensor
function

build

Python

Build a MetaFormer model.

helia_edge/models/metaformer.py:412

build(
params: MetaFormerParams,
input_shape: tuple[int | None, ...],
*,
batch_size: int | None = None,
name: str | None = None,
) -> keras.Model

Build a MetaFormer model.

Parameters of build
NameTypeDefaultDescription
paramsMetaFormerParamsRequiredModel parameters.
input_shapetuple[int | None, ...]RequiredInput shape without the batch axis; None for a variable axis.
batch_sizeint | NoneNoneStatic batch size; None for a dynamic batch.
namestr | NoneNoneModel name; the family when None.
Returns of build
TypeDescription
keras.Modelkeras.Model: The model, named ``metaformer`` unless ``name`` is given.