fusions package
Subpackages
Submodules
fusions.MCTN module
Implements MCTN for Fusions.
- class fusions.MCTN.Attention(hidden_size)
Bases:
Module
Implements Attention Mechanism for MCTN.
- __init__(hidden_size)
Initialize Attention Mechanism for MCTN.
- Parameters:
hidden_size (int) – Hidden Size of Attention Layer.
- forward(hidden, encoder_outputs)
Apply Attention to Input, with Hidden Layers.
- Parameters:
hidden – Initial hidden state.
encoder_outputs – Outputs of Encoder object.
- Returns:
Output of Attention layer
- Return type:
output
- training: bool
- class fusions.MCTN.Decoder(hidden_size, output_size, n_layers=1, dropout=0.2)
Bases:
Module
Apply a gated GRU to decode the input vector.
Paper/Code Sourced From: https://arxiv.org/pdf/1812.07809.pdf.
- __init__(hidden_size, output_size, n_layers=1, dropout=0.2)
Initialize Decoder Mechanism for MCTN.
- Parameters:
hidden_size (int) – Size of hidden layer.
output_size (int) – Size of output layer
n_layers (int, optional) – Number of layers in encoder. Defaults to 1.
dropout (float, optional) – Dropout percentage. Defaults to 0.2.
- forward(input, last_hidden, encoder_outputs)
Apply Decoder Mechanism for MCTN.
- Parameters:
input – Input to MCTN Mechanism.
last_hidden – Last hidden layer input.
encoder_outputs – Output of Encoder object.
- Returns:
Output of this module.
- Return type:
output
- training: bool
- class fusions.MCTN.Encoder(input_size, hidden_size, n_layers=1, dropout=0.2)
Bases:
Module
Apply a gated GRU to encode the input vector.
Paper/Code Sourced From: https://arxiv.org/pdf/1812.07809.pdf.
- __init__(input_size, hidden_size, n_layers=1, dropout=0.2)
Create Encoder.
- Parameters:
input_size – Encoder input size
hidden_size – Hidden state size for internal GRU
n_layers – Number of layers in recurrent unit
dropout – Dropout Probability
- forward(src, hidden=None)
Apply Encoder to input.
- Parameters:
src – Encoder Input
hidden – Encoder Hidden State
- training: bool
- class fusions.MCTN.L2_MCTN(seq2seq_0, seq2seq_1, regression_encoder, head, p=0.2)
Bases:
Module
Implements 2-Output MCTN.
- __init__(seq2seq_0, seq2seq_1, regression_encoder, head, p=0.2)
Initialize L2_MCTN.
- Parameters:
seq2seq_0 (nn.Module) – Seq2Seq Module converting input to target 1.
seq2seq_1 (nn.Module) – Seq2Seq Module converting input to target 2.
regression_encoder (nn.Module) – Encoder applied to joint embedding.
head (nn.Module) – Head module.
p (float, optional) – Dropout percentage. Defaults to 0.2.
- forward(src, trg0=None, trg1=None)
Apply L2_MCTN to input.
- Parameters:
src (torch.Tensor) – Input tensor.
trg0 (torch.Tensor, optional) – Target output for Seq2Seq Module 1 Teacher Forcing. Defaults to None.
trg1 (torch.Tensor, optional) – Target output for Seq2Seq Module 2 Teacher Forcing. Defaults to None.
- Returns:
Output for L2_MCTN instance.
- Return type:
torch.Tensor
- training: bool
- class fusions.MCTN.MCTN(seq2seq, regression_encoder, head, p=0.2)
Bases:
Module
Implements MCTN.
- __init__(seq2seq, regression_encoder, head, p=0.2)
Initialize MCTN object.
- Parameters:
seq2seq (nn.Module) – Seq2Seq module for MCTN.
regression_encoder (nn.Module) – Encoder module for MCTN.
head (nn.Module) – Head for MCTN.
p (float, optional) – Dropout probability. Defaults to 0.2.
- forward(src, trg=None)
Apply Cyclic Joint Embedding in MCTN.
- Parameters:
src (torch.Tensor) – Input Tensor
trg (torch.Tensor, optional) – Output Tensor for Teacher-Forcing. Defaults to None.
- Returns:
Output after applying MCTN.
- Return type:
torch.Tensor
- training: bool
- class fusions.MCTN.Seq2Seq(encoder, decoder)
Bases:
Module
Implements a Seq2Seq Layer for MCTN.
- __init__(encoder, decoder)
Initialize Seq2Seq Module.
- Parameters:
encoder (nn.Module) – Encoder for the Seq2Seq Layer.
decoder (nn.Module) – Decoder for the Seq2Seq Layer.
- forward(src, trg, teacher_forcing_ratio=0.5)
Apply Seq2Seq Module to Input.
- Parameters:
src (torch.Tensor) – Seq2Seq Input
trg (torch.Tensor) – Seq2Seq Output for Teacher Forcing.
teacher_forcing_ratio (float, optional) – Teacher Forcing Ratio. Set to 0 when evaluating. Defaults to 0.5.
- Returns:
_description_
- Return type:
_type_
- training: bool
fusions.MVAE module
Implements MVAE.
- class fusions.MVAE.ProductOfExperts(size)
Bases:
Module
Return parameters for product of independent experts.
See https://arxiv.org/pdf/1410.7827.pdf for equations.
- __init__(size)
Initialize Product of Experts Object.
- Parameters:
size (int) – Size of Product of Experts Layer
- forward(mus, logvars, eps=1e-08)
Apply Product of Experts Layer.
- Parameters:
mus (torch.Tensor) – torch.Tensor of Mus
logvars (torch.Tensor) – torch.Tensor of Logvars
eps (float, optional) – Epsilon for log-exponent trick. Defaults to 1e-8.
- Returns:
Output of PoE layer.
- Return type:
torch.Tensor, torch.Tensor
- training: bool
- class fusions.MVAE.ProductOfExperts_Zipped(size)
Bases:
Module
Return parameters for product of independent experts.
See https://arxiv.org/pdf/1410.7827.pdf for equations.
- __init__(size)
Initialize Product of Experts Object.
- Parameters:
size (int) – Size of Product of Experts Layer
- forward(zipped, eps=1e-08)
Apply Product of Experts Layer.
- Parameters:
mus (torch.Tensor) – torch.Tensor of Mus
logvars (torch.Tensor) – torch.Tensor of Logvars
eps (float, optional) – Epsilon for log-exponent trick. Defaults to 1e-8.
- Returns:
Output of PoE layer.
- Return type:
torch.Tensor, torch.Tensor
- training: bool
fusions.common_fusions module
Implements common fusion patterns.
- class fusions.common_fusions.Concat
Bases:
Module
Concatenation of input data on dimension 1.
- __init__()
Initialize Concat Module.
- forward(modalities)
Forward Pass of Concat.
- Parameters:
modalities – An iterable of modalities to combine
- training: bool
- class fusions.common_fusions.ConcatEarly
Bases:
Module
Concatenation of input data on dimension 2.
- __init__()
Initialize ConcatEarly Module.
- forward(modalities)
Forward Pass of ConcatEarly.
- Parameters:
modalities – An iterable of modalities to combine
- training: bool
- class fusions.common_fusions.ConcatWithLinear(input_dim, output_dim, concat_dim=1)
Bases:
Module
Concatenates input and applies a linear layer.
- __init__(input_dim, output_dim, concat_dim=1)
Initialize ConcatWithLinear Module.
- Parameters:
input_dim – The input dimension for the linear layer
output_dim – The output dimension for the linear layer
- Concat_dim:
The concatentation dimension for the modalities.
- forward(modalities)
Forward Pass of Stack.
- Parameters:
modalities – An iterable of modalities to combine
- training: bool
- class fusions.common_fusions.EarlyFusionTransformer(n_features)
Bases:
Module
Implements a Transformer with Early Fusion.
- __init__(n_features)
Initialize EarlyFusionTransformer Object.
- Parameters:
n_features (int) – Number of features in input.
- embed_dim = 9
- forward(x)
Apply EarlyFusion with a Transformer Encoder to input.
- Parameters:
x (torch.Tensor) – Input Tensor
- Returns:
Layer Output
- Return type:
torch.Tensor
- training: bool
- class fusions.common_fusions.LateFusionTransformer(embed_dim=9)
Bases:
Module
Implements a Transformer with Late Fusion.
- __init__(embed_dim=9)
Initialize LateFusionTransformer Layer.
- Parameters:
embed_dim (int, optional) – Size of embedding layer. Defaults to 9.
- forward(x)
Apply LateFusionTransformer Layer to input.
- Parameters:
x (torch.Tensor) – Layer input
- Returns:
Layer output
- Return type:
torch.Tensor
- training: bool
- class fusions.common_fusions.LowRankTensorFusion(input_dims, output_dim, rank, flatten=True)
Bases:
Module
Implementation of Low-Rank Tensor Fusion.
See https://github.com/Justin1904/Low-rank-Multimodal-Fusion for more information.
- __init__(input_dims, output_dim, rank, flatten=True)
Initialize LowRankTensorFusion object.
- Parameters:
input_dims – list or tuple of integers indicating input dimensions of the modalities
output_dim – output dimension
rank – a hyperparameter of LRTF. See link above for details
flatten – Boolean to dictate if output should be flattened or not. Default: True
- forward(modalities)
Forward Pass of Low-Rank TensorFusion.
- Parameters:
modalities – An iterable of modalities to combine.
- training: bool
- class fusions.common_fusions.MultiplicativeInteractions2Modal(input_dims, output_dim, output, flatten=False, clip=None, grad_clip=None, flip=False)
Bases:
Module
Implements 2-way Modal Multiplicative Interactions.
- __init__(input_dims, output_dim, output, flatten=False, clip=None, grad_clip=None, flip=False)
- Parameters:
input_dims – list or tuple of 2 integers indicating input dimensions of the 2 modalities
output_dim – output dimension
output – type of MI, options from ‘matrix3D’,’matrix’,’vector’,’scalar’
flatten – whether we need to flatten the input modalities
clip – clip parameter values, None if no clip
grad_clip – clip grad values, None if no clip
flip – whether to swap the two input modalities in forward function or not
- forward(modalities)
Forward Pass of MultiplicativeInteractions2Modal.
- Parameters:
modalities – An iterable of modalities to combine.
- training: bool
- class fusions.common_fusions.MultiplicativeInteractions3Modal(input_dims, output_dim, task=None)
Bases:
Module
Implements 3-Way Modal Multiplicative Interactions.
- __init__(input_dims, output_dim, task=None)
Initialize MultiplicativeInteractions3Modal object.
- Parameters:
input_dims – list or tuple of 3 integers indicating sizes of input
output_dim – size of outputs
task – Set to “affect” when working with social data.
- forward(modalities)
Forward Pass of MultiplicativeInteractions3Modal.
- Parameters:
modalities – An iterable of modalities to combine.
- training: bool
- class fusions.common_fusions.NLgate(thw_dim, c_dim, tf_dim, q_linear=None, k_linear=None, v_linear=None)
Bases:
Module
Implements of Non-Local Gate-based Fusion.
See section F4 of https://arxiv.org/pdf/1905.12681.pdf for details
- __init__(thw_dim, c_dim, tf_dim, q_linear=None, k_linear=None, v_linear=None)
q_linear, k_linear, v_linear are none if no linear layer applied before q,k,v.
Otherwise, a tuple of (indim,outdim) is required for each of these 3 arguments.
- Parameters:
thw_dim – See paper
c_dim – See paper
tf_dim – See paper
q_linear – See paper
k_linear – See paper
v_linear – See paper
- forward(x)
Apply Low-Rank TensorFusion to input.
- Parameters:
x – An iterable of modalities to combine.
- training: bool
- class fusions.common_fusions.Stack
Bases:
Module
Stacks modalities together on dimension 1.
- __init__()
Initialize Stack Module.
- forward(modalities)
Forward Pass of Stack.
- Parameters:
modalities – An iterable of modalities to combine
- training: bool
- class fusions.common_fusions.TensorFusion
Bases:
Module
Implementation of TensorFusion Networks.
See https://github.com/Justin1904/TensorFusionNetworks/blob/master/model.py for more and the original code.
- __init__()
Instantiates TensorFusion Network Module.
- forward(modalities)
Forward Pass of TensorFusion.
- Parameters:
modalities – An iterable of modalities to combine.
- training: bool
fusions.searchable module
Implements fusion network structure for MFAS.
See https://github.com/slyviacassell/_MFAS/tree/master/models for hyperparameter details.
- class fusions.searchable.Searchable(layered_encoders, rep_size, classes, conf, sub_sizes, alphas=False)
Bases:
Module
Implements MFAS’s Searchable fusion module.
- __init__(layered_encoders, rep_size, classes, conf, sub_sizes, alphas=False)
Instantiate Searchable Module.
- Parameters:
layered_encoders (List) – List of nn.Modules for each encoder
rep_size (int) – Representation size from unimodals
classes (int) – Number of classes
conf (Config) – Config instance that generates the layer in question.
sub_sizes (int) – Sub sizes
alphas (bool, optional) – Whether to generate alphas. Defaults to False.
- alphasgen()
Generate alpha-layers if stated to do so.
- central_params()
Define parameters for central module.
- fcs()
Create fullyconnected layers given config.
- forward(inputs)
Apply Searchable Module to Layer Inputs.
- Parameters:
inputs (torch.Tensor) – List of input tensors
- Returns:
Layer Output
- Return type:
torch.Tensor
- training: bool
- fusions.searchable.get_possible_layer_configurations(max_labels)
Generate possible layer configurations.
- Parameters:
max_labels (int) – Maximum number of labels
- Returns:
List of Configuration Instances.
- Return type:
list
- fusions.searchable.train_sampled_models(sampled_configurations, searchable_type, dataloaders, use_weightsharing, device, unimodal_files, rep_size, classes, sub_sizes, batch_size, epochs, eta_max, eta_min, Ti, Tm, return_model=False, premodels=False, preaccuracies=False, train_only_central_params=True, state_dict={})
Train sampled configurations from MFAS.
- Parameters:
sampled_configurations (List[config]) – List of configurations to train on.
searchable_type (rn) – Function to create full model from configurations.
dataloaders (List[torch.util.data.DataLoaders]) – List of dataloaders to train on.
use_weightsharing (bool) – Whether to use weightsharing or not.
device (torch.device) – Device to train on.
unimodal_files (List[path]) – List of unimodal encoder paths to train on.
rep_size (int) – Internal Representation Size
classes (int) – Number of classes
sub_sizes (int) – Sub sizes.
batch_size (int) – Batch size to train on.
epochs (int) – Number of epochs to train on.
eta_max (float) – Minimum eta of LRCosineAnnealingScheduler
eta_min (float) – Maximum eta of LRCosineAnnealingScheduler
Ti (float) – Ti for LRCosineAnnealingScheduler
Tm (float) – Tm for LRCosineAnnealingScheduler
return_model (bool, optional) – Whether to return the trained module as nn.Module. Defaults to False.
premodels (bool, optional) – Whether there are pre-trained unimodal models or not. Defaults to False.
preaccuracies (bool, optional) – (Unused). Defaults to False.
train_only_central_params (bool, optional) – Whether to train only central parameters or not. Defaults to True.
state_dict (_type_, optional) – (unused). Defaults to dict().
- Returns:
List of model accuracies.
- Return type:
List
- fusions.searchable.train_track_acc(model, criteria, optimizer, scheduler, dataloaders, dataset_sizes, device=None, num_epochs=200, verbose=False, multitask=False)
Get best accuracy for model when training on a set of dataloaders.
- Parameters:
model (nn.Module) – Model to train on.
criteria (nn.Module) – Loss function.
optimizer (nn.optim.Optimizer) – Optimizer instance
scheduler (nn.optim.Scheduler) – LRScheduler to use.
dataloaders (List) – List of dataloaders to train on.
dataset_sizes (List) – List of the sizes of the datasets
device (torch.device, optional) – Device to train on. Defaults to None.
num_epochs (int, optional) – Number of epochs to train on. Defaults to 200.
verbose (bool, optional) – (Unused) Defaults to False.
multitask (bool, optional) – Whether to train as a multitask setting. Defaults to False.
- Returns:
Best accuracy when training.
- Return type:
float