def __init__(self,
                 seq_dim,
                 img_dim,
                 hidden_dim,
                 output_dim,
                 bili_norm_type,
                 bili_affine,
                 bili_non_linear,
                 bili_dropout=None,
                 **kwargs):
        super(HdmProdBilinearFusion, self).__init__()

        self.SeqTrans = nn.Linear(seq_dim, hidden_dim)
        self.ImgTrans = nn.Linear(img_dim, hidden_dim)
        self.OutTrans = nn.Linear(hidden_dim, output_dim)

        if bili_dropout is None:
            self.Dropout = nn.Identity()
        else:
            self.Dropout = nn.Dropout(bili_dropout)

        self.Norm = buildNormalization(norm_name=bili_norm_type,
                                       feature_shape=output_dim,
                                       affine=bili_affine,
                                       norm_name_map={'bn': 'bn_1d'})

        self.NonLinear = buildActivation(bili_non_linear)
Beispiel #2
0
    def __init__(self,
                 input_dim,
                 dnn_hidden_dims,
                 dnn_activations,
                 dnn_dropouts,
                 dnn_norm_type=None,
                 feature_dims={},
                 **kwargs):

        super().__init__(input_dim, dnn_hidden_dims, dnn_activations,
                         dnn_dropouts, **kwargs)

        try:
            seq_dim = feature_dims['seq']
        except KeyError as e:
            raise ValueError(
                f"[DNNCatRetCatFusion] Unable to fetch sequence dim from param: {str(e)}"
            )

        cat_dim = seq_dim + self._DnnOutputDim
        self.Norm = buildNormalization(dnn_norm_type,
                                       cat_dim,
                                       norm_name_map={
                                           'bn': 'bn_1d',
                                           'in': 'in_1d'
                                       })
    def __init__(self,
                 seq_dim,
                 img_dim,
                 output_dim,
                 bili_norm_type,
                 bili_affine,
                 bili_non_linear,
                 bili_dropout=None,
                 **kwargs):
        super(BilinearFusion, self).__init__()
        self.Trans = nn.Bilinear(seq_dim, img_dim, output_dim, bias=False)

        if bili_dropout is None:
            self.Dropout = nn.Identity()
        else:
            self.Dropout = nn.Dropout(bili_dropout)

        self.Norm = buildNormalization(norm_name=bili_norm_type,
                                       feature_shape=output_dim,
                                       affine=bili_affine,
                                       norm_name_map={
                                           'bn': 'bn_1d',
                                           'ln': "ln_1d"
                                       })

        self.NonLinear = buildActivation(bili_non_linear)
Beispiel #4
0
    def __init__(self,
                 input_dim,
                 dnn_hidden_dims,
                 dnn_activations,
                 dnn_dropouts,
                 dnn_norm_type=None,
                 feature_dims={},
                 **kwargs):

        super().__init__(input_dim, dnn_hidden_dims, dnn_activations,
                         dnn_dropouts, **kwargs)

        cat_dim = self._DnnOutputDim
        self.Norm = buildNormalization(dnn_norm_type,
                                       cat_dim,
                                       norm_name_map={
                                           'bn': 'bn_1d',
                                           'in': 'in_1d'
                                       })