def __init__(self,
                 text_hidden_dim=None,
                 vision_hidden_dim=None,
                 audio_hidden_dim=None,
                 feature_dim=None,
                 num_labels=None,
                 fusion='concat'):
        '''
        :param text_hidden_dim:
        :param vision_hidden_dim:
        :param audio_hidden_dim:
        :param feature_dim:
        :param num_labels:
        :param fusion:
        '''

        super(DOMFN, self).__init__()
        self.text_hidden_dim = text_hidden_dim
        self.vision_hidden_dim = vision_hidden_dim
        self.audio_hidden_dim = audio_hidden_dim
        self.feature_dim = feature_dim
        self.num_labels = num_labels
        self.fusion = fusion

        self.text_encoder = Fcn(self.text_hidden_dim, self.feature_dim, self.num_labels)
        self.vision_encoder = Fcn(self.vision_hidden_dim, self.feature_dim, self.num_labels)
        self.audio_encoder = Fcn(self.audio_hidden_dim, self.feature_dim, self.num_labels)

        self.multi_encoder = nn.Sequential(
            nn.Linear((3 if self.fusion == 'concat' else 1)*self.feature_dim, 64),
            nn.ReLU(),
            nn.Linear(64, self.num_labels),
            nn.Sigmoid()
        )
        self.criterion = nn.CrossEntropyLoss()

        :param text_hidden_dim:
        :param vision_hidden_dim:
        :param audio_hidden_dim:
        :param feature_dim:
        :param num_labels:
        :param fusion:
        
torchmm/models/retrieval/domfn.py