quantlab.model.predefined.transformer.TransformerNet#

class quantlab.model.predefined.transformer.TransformerNet(num_features, num_labels, d_model=64, nhead=2, num_layers=2, dropout=0.0)[source]#

Bases: Module

Qlib’s Transformer (pytorch_transformer_ts.py) with an output of any width.

Linear(F, D) embeds every bar, the sinusoidal position encoding is added, num_layers PyTorch encoder layers (feed-forward width 2048, post-norm, as nn.TransformerEncoderLayer’s defaults) attend over the N bars, and Linear(D, L) maps the last bar to the output. The parameter names are Qlib’s, so a Qlib state dict loads into a one-label net.

Parameters:
num_featuresint

Features per bar, F.

num_labelsint

Outputs per sample, L; Qlib’s model has one.

d_modelint, default 64

D.

nheadint, default 2

Attention heads.

num_layersint, default 2

Encoder layers.

dropoutfloat, default 0.0

Dropout of the encoder layers.

Examples

>>> net = TransformerNet(num_features=4, num_labels=2, d_model=8)
>>> net(torch.randn(5, 3, 4)).shape
torch.Size([5, 2])
forward(x)[source]#

Map [B, N, F] windows to [B, L] outputs.

Examples

>>> net.forward(torch.randn(2, 6, 4)).shape
torch.Size([2, 2])