def add_language_embedding_for_vocab()

in lib/modeling/VGG16_rel_softmaxed_triplet.py [0:0]


def add_language_embedding_for_vocab(model):

    if cfg.TEXT_EMBEDDING.HIDDEN_LAYERS > 0:
        model.add_FC_layer_with_weight_name(
            'lang_sbj_and_obj',
            'all_obj_word_vecs',
            'all_obj_lan_embds_raw_1',
            cfg.INPUT_LANG_EMBEDDING_DIM, cfg.OUTPUT_EMBEDDING_DIM,
            weight_init=('GaussianFill', {'std': 0.01}),
            bias_init=('ConstantFill', {'value': 0.}))
        model.add_FC_layer_with_weight_name(
            'lang_rel',
            'all_prd_word_vecs',
            'all_prd_lan_embds_raw_1',
            cfg.INPUT_LANG_EMBEDDING_DIM, cfg.OUTPUT_EMBEDDING_DIM,
            weight_init=('GaussianFill', {'std': 0.01}),
            bias_init=('ConstantFill', {'value': 0.}))
        if cfg.TEXT_EMBEDDING.HIDDEN_LAYERS > 1:
            model.Relu('all_obj_lan_embds_raw_1', 'all_obj_lan_embds_raw_1')
            model.add_FC_layer_with_weight_name(
                'lang_sbj_and_obj_2',
                'all_obj_lan_embds_raw_1',
                'all_obj_lan_embds_raw_2',
                cfg.OUTPUT_EMBEDDING_DIM, cfg.OUTPUT_EMBEDDING_DIM,
                weight_init=('GaussianFill', {'std': 0.01}),
                bias_init=('ConstantFill', {'value': 0.}))
            model.Relu('all_prd_lan_embds_raw_1', 'all_prd_lan_embds_raw_1')
            model.add_FC_layer_with_weight_name(
                'lang_rel_2',
                'all_prd_lan_embds_raw_1',
                'all_prd_lan_embds_raw_2',
                cfg.OUTPUT_EMBEDDING_DIM, cfg.OUTPUT_EMBEDDING_DIM,
                weight_init=('GaussianFill', {'std': 0.01}),
                bias_init=('ConstantFill', {'value': 0.}))
            if cfg.TEXT_EMBEDDING.HIDDEN_LAYERS > 2:
                model.Relu('all_obj_lan_embds_raw_2', 'all_obj_lan_embds_raw_2')
                model.add_FC_layer_with_weight_name(
                    'lang_sbj_and_obj_3',
                    'all_obj_lan_embds_raw_2',
                    'all_obj_lan_embds_raw_3',
                    cfg.OUTPUT_EMBEDDING_DIM, cfg.OUTPUT_EMBEDDING_DIM,
                    weight_init=('GaussianFill', {'std': 0.01}),
                    bias_init=('ConstantFill', {'value': 0.}))
                model.Relu('all_prd_lan_embds_raw_2', 'all_prd_lan_embds_raw_2')
                model.add_FC_layer_with_weight_name(
                    'lang_rel_3',
                    'all_prd_lan_embds_raw_2',
                    'all_prd_lan_embds_raw_3',
                    cfg.OUTPUT_EMBEDDING_DIM, cfg.OUTPUT_EMBEDDING_DIM,
                    weight_init=('GaussianFill', {'std': 0.01}),
                    bias_init=('ConstantFill', {'value': 0.}))
                # language embeddings must be normalized
                model.net.Normalize('all_obj_lan_embds_raw_3', 'all_obj_lan_embds')
                model.net.Normalize('all_prd_lan_embds_raw_3', 'all_prd_lan_embds')
            else:
                # language embeddings must be normalized
                model.net.Normalize('all_obj_lan_embds_raw_2', 'all_obj_lan_embds')
                model.net.Normalize('all_prd_lan_embds_raw_2', 'all_prd_lan_embds')
        else:
            model.net.Normalize('all_obj_lan_embds_raw_1', 'all_obj_lan_embds')
            model.net.Normalize('all_prd_lan_embds_raw_1', 'all_prd_lan_embds')
    else:
        model.net.Alias('all_obj_word_vecs', 'all_obj_lan_embds')
        model.net.Alias('all_prd_word_vecs', 'all_prd_lan_embds')

    model.Scale(
        'all_obj_lan_embds', 'scaled_all_obj_lan_embds', scale=cfg.TRAIN.NORM_SCALAR)
    model.Scale(
        'all_prd_lan_embds', 'scaled_all_prd_lan_embds', scale=cfg.TRAIN.NORM_SCALAR)