Skip to content

rnn

A module of feature extractors based on recurrent neural networks.

GruExtractor

Bases: Module

A Gated Recurrent Unit (GRU) based network that extracts a feature vector from same-length time windows.

This feature extractor consists of multiple fully connected (FC) layers with a ReLU activation functions and a multi-layer GRU. The GRU layers can be configured as bidirectional. Dropout can be applied separately to the GRU layers.

The data flow is as follows: Input --> FC x n --> GRU x m --> Output

The expected input shape is [batch_size, num_features, window_size].

Examples:

>>> import torch
>>> from rul_adapt.model import GruExtractor
>>> gru = GruExtractor(input_channels=14, fc_units=[16, 8], gru_units=[8])
>>> gru(torch.randn(10, 14, 30)).shape
torch.Size([10, 8])

__init__(input_channels, fc_units, gru_units, gru_dropout=0.0, bidirectional=False)

Create a new GRU-based feature extractor.

The fc_units are the output units for each fully connected layer and gru_units for each LSTM layer. If bidirectional is set to True, a BiGRU is used and the output units are doubled. The number of output features of this network is either gru_units[-1] by default, or 2 * gru_units[ -1] if bidirectional is set.

Dropout can be applied to each GRU layer by setting lstm_dropout to a number greater than zero.

Parameters:

Name Type Description Default
input_channels int

The number of input channels.

required
fc_units List[int]

The list of output units for the fully connected layers.

required
gru_units List[int]

The list of output units for the GRU layers

required
gru_dropout float

The dropout probability for the GRU layers.

0.0
bidirectional bool

Whether to use a BiGRU.

False

LstmExtractor

Bases: Module

A Long Short Term Memory (LSTM) based network that extracts a feature vector from same-length time windows.

This feature extractor consists of a multi-layer LSTM and an optional fully connected (FC) layer with a ReLU activation function. The LSTM layers can be configured as bidirectional. Dropout can be applied separately to LSTM and FC layers.

The data flow is as follows: Input --> LSTM x n --> [FC] --> Output

The expected input shape is [batch_size, num_features, window_size].

Examples:

Without FC
>>> import torch
>>> from rul_adapt.model import LstmExtractor
>>> lstm = LstmExtractor(input_channels=14,units=[16, 16])
>>> lstm(torch.randn(10, 14, 30)).shape
torch.Size([10, 16])

With FC
>>> from rul_adapt.model import LstmExtractor
>>> lstm = LstmExtractor(input_channels=14,units=[16, 16],fc_units=8)
>>> lstm(torch.randn(10, 14, 30)).shape
torch.Size([10, 8])

__init__(input_channels, units, fc_units=None, dropout=0.0, fc_dropout=0.0, bidirectional=False)

Create a new LSTM-based feature extractor.

The units are the output units for each LSTM layer. If bidirectional is set to True, a BiLSTM is used and the output units are doubled. If fc_units is set, a fully connected layer is appended. The number of output features of this network is either units[-1] by default, 2 * units[ -1] if bidirectional is set, or fc_units if it is set.

Dropout can be applied to each LSTM layer by setting lstm_dropout to a number greater than zero. The same is valid for the fully connected layer and fc_dropout.

Parameters:

Name Type Description Default
input_channels int

The number of input channels.

required
units List[int]

The list of output units for the LSTM layers.

required
fc_units Optional[int]

The number of output units for the fully connected layer.

None
dropout float

The dropout probability for the LSTM layers.

0.0
fc_dropout float

The dropout probability for the fully connected layer.

0.0
bidirectional bool

Whether to use a BiLSTM.

False