FranSys¶
FranSys prediction framework: diagnosis/prognosis models and training utilities.
Diag_RNN ¶
Diag_RNN(input_size: int, output_size: int, hidden_size: int = 100, rnn_layer: int = 1, linear_layer: int = 1, **kwargs)
Bases: Module
RNN-based diagnosis model that outputs flat state vectors.
Outputs [batch, seq_len, output_size] — a flat state estimate per timestep.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
input_size
|
int
|
number of input features |
required |
output_size
|
int
|
flat state dimension (typically |
required |
hidden_size
|
int
|
number of hidden units in the RNN |
100
|
rnn_layer
|
int
|
number of RNN layers |
1
|
linear_layer
|
int
|
number of linear layers in the output head |
1
|
Source code in tsfast/prediction/fransys.py
Diag_RNN_raw ¶
Bases: Module
Raw RNN diagnosis model that returns flattened hidden states directly.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
input_size
|
int
|
number of input features |
required |
hidden_size
|
int
|
number of hidden units in the RNN |
100
|
rnn_layer
|
int
|
number of RNN layers |
1
|
Source code in tsfast/prediction/fransys.py
Diag_TCN ¶
Bases: Module
TCN-based diagnosis model with optional MLP output head.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
input_size
|
int
|
number of input features |
required |
output_size
|
int
|
flat state dimension (typically |
required |
hl_width
|
int
|
width of TCN hidden layers |
required |
mlp_layers
|
int
|
number of additional MLP layers after the TCN |
0
|
Source code in tsfast/prediction/fransys.py
ARProg_Init ¶
ARProg_Init(n_u: int, n_y: int, init_sz: int, prognosis: Module | None = None, n_x: int = 0, hidden_size: int = 100, rnn_layer: int = 1, diag_model: Module | None = None, linear_layer: int = 1, final_layer: int = 0, init_sz_range: tuple[int, int] | None = None, **kwargs)
Bases: Module
Autoregressive prognosis model with diagnosis-based initialization.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_u
|
int
|
number of input channels |
required |
n_y
|
int
|
number of output channels |
required |
init_sz
|
int
|
number of initial time steps used for diagnosis |
required |
prognosis
|
Module | None
|
custom AR prognosis model (default: AR_Model wrapping SimpleRNN) |
None
|
n_x
|
int
|
number of external state channels |
0
|
hidden_size
|
int
|
number of hidden units (for default prognosis and diagnosis) |
100
|
rnn_layer
|
int
|
number of RNN layers (for default prognosis and diagnosis) |
1
|
diag_model
|
Module | None
|
custom diagnosis model outputting |
None
|
linear_layer
|
int
|
number of linear layers in the diagnosis output head |
1
|
final_layer
|
int
|
number of additional final layers (unused, reserved) |
0
|
init_sz_range
|
tuple[int, int] | None
|
if set, randomize init_sz within (min, max) during training |
None
|
Source code in tsfast/prediction/fransys.py
FranSys ¶
FranSys(n_u: int, n_y: int, init_sz: int, prognosis: Module, n_x: int = 0, hidden_size: int = 100, rnn_layer: int = 1, diag_model: Module | None = None, linear_layer: int = 1, init_diag_only: bool = False, final_layer: int = 0, init_sz_range: tuple[int, int] | None = None, **kwargs)
Bases: Module
Framework for Analysis of Systems: combined diagnosis/prognosis model.
Accepts any stateful prognosis model that returns (output, state) with
output shaped [B, seq, features] (or [layers, B, seq, H] for RNNs
with ret_full_hidden=True).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_u
|
int
|
number of input channels |
required |
n_y
|
int
|
number of output channels |
required |
init_sz
|
int
|
number of initial time steps used for diagnosis |
required |
prognosis
|
Module
|
stateful model returning |
required |
n_x
|
int
|
number of external state channels |
0
|
hidden_size
|
int
|
hidden units for default diagnosis model |
100
|
rnn_layer
|
int
|
number of layers for default diagnosis model |
1
|
diag_model
|
Module | None
|
custom diagnosis model outputting |
None
|
linear_layer
|
int
|
number of linear layers in the diagnosis output head |
1
|
init_diag_only
|
bool
|
if True, limit diagnosis to init_sz time steps during training |
False
|
final_layer
|
int
|
number of additional layers in the shared output head |
0
|
init_sz_range
|
tuple[int, int] | None
|
if set, randomize init_sz within (min, max) during training |
None
|
Source code in tsfast/prediction/fransys.py
FranSysLearner ¶
FranSysLearner(dls, init_sz: int, attach_output: bool = False, loss_func=nn.L1Loss(), metrics: list | None = None, opt_func=torch.optim.Adam, lr: float = 0.003, transforms: list | None = None, augmentations: list | None = None, aux_losses: list | None = None, grad_clip: float | None = None, plot_fn=None, input_norm: type | None = StandardScaler, output_norm: type | None = None, prognosis: Module | None = None, hidden_size: int = 100, rnn_layer: int = 1, n_x: int = 0, diag_model: Module | None = None, linear_layer: int = 1, init_diag_only: bool = False, final_layer: int = 0, init_sz_range: tuple[int, int] | None = None, device: device | None = None, show_bar: bool = True, **kwargs) -> Learner
Create a Learner configured for FranSys diagnosis/prognosis training.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dls
|
DataLoaders with norm_stats for input/output normalization |
required | |
init_sz
|
int
|
number of initial time steps used for diagnosis |
required |
attach_output
|
bool
|
if True, use prediction_concat to concatenate output to input |
False
|
loss_func
|
loss function |
L1Loss()
|
|
metrics
|
list | None
|
metrics to track |
None
|
opt_func
|
optimizer constructor |
Adam
|
|
lr
|
float
|
learning rate |
0.003
|
transforms
|
list | None
|
additional transforms (train + valid) |
None
|
augmentations
|
list | None
|
additional augmentations (train only) |
None
|
aux_losses
|
list | None
|
additional auxiliary losses |
None
|
grad_clip
|
float | None
|
max gradient norm for clipping, or None to disable |
None
|
plot_fn
|
plotting function for show_batch/show_results |
None
|
|
input_norm
|
type | None
|
scaler class for input normalization, None to disable |
StandardScaler
|
output_norm
|
type | None
|
scaler class for output denormalization, None to disable |
None
|
prognosis
|
Module | None
|
custom prognosis model (default: RNN with ret_full_hidden=True) |
None
|
hidden_size
|
int
|
hidden units for default prognosis and diagnosis |
100
|
rnn_layer
|
int
|
number of RNN layers for default prognosis and diagnosis |
1
|
n_x
|
int
|
number of external state channels |
0
|
diag_model
|
Module | None
|
custom diagnosis model |
None
|
linear_layer
|
int
|
number of linear layers in the diagnosis output head |
1
|
init_diag_only
|
bool
|
if True, limit diagnosis to init_sz during training |
False
|
final_layer
|
int
|
number of additional layers in the output head |
0
|
init_sz_range
|
tuple[int, int] | None
|
if set, randomize init_sz during training |
None
|
device
|
device | None
|
target device (auto-detected if None) |
None
|
show_bar
|
bool
|
whether to show tqdm progress bars |
True
|
Source code in tsfast/prediction/fransys.py
297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 | |