def _init_combine_layer(self, attr1, attr2): config_attr = attr1 + "_" + attr2 + "_modal_combine" multi_modal_combine_layer = ModalCombineLayer( self.config[config_attr].type, getattr(self, self._get_embeddings_attr(attr1)), getattr(self, self._get_embeddings_attr(attr2)), **self.config[config_attr].params) setattr( self, attr1 + "_" + attr2 + "_multi_modal_combine_layer", multi_modal_combine_layer, )
def __init__(self, image_dim, question_dim, **kwargs): super().__init__() combine_type = kwargs["modal_combine"]["type"] combine_params = kwargs["modal_combine"]["params"] modal_combine_layer = ModalCombineLayer(combine_type, image_dim, question_dim, **combine_params) transform_type = kwargs["transform"]["type"] transform_params = kwargs["transform"]["params"] transform_layer = TransformLayer(transform_type, modal_combine_layer.out_dim, **transform_params) normalization = kwargs["normalization"] self.module = TopDownAttention(modal_combine_layer, transform_layer, normalization) if hasattr(self.module, "out_dim"): self.out_dim = self.module.out_dim