def add_language_embedding_for_gt()

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


def add_language_embedding_for_gt(model):

    sbj_vecs_name = 'sbj_pos_vecs'
    obj_vecs_name = 'obj_pos_vecs'
    rel_vecs_name = 'rel_pos_vecs'
    sbj_embd_name = 'sbj_pos_lan_embds'
    obj_embd_name = 'obj_pos_lan_embds'
    rel_embd_name = 'rel_pos_lan_embds'

    if cfg.TEXT_EMBEDDING.HIDDEN_LAYERS > 0:
        model.add_FC_layer_with_weight_name(
            'lang_sbj_and_obj',
            sbj_vecs_name,
            sbj_embd_name + '_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_sbj_and_obj',
            obj_vecs_name,
            obj_embd_name + '_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',
            rel_vecs_name,
            rel_embd_name + '_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(sbj_embd_name + '_raw_1', sbj_embd_name + '_raw_1')
            model.add_FC_layer_with_weight_name(
                'lang_sbj_and_obj_2',
                sbj_embd_name + '_raw_1',
                sbj_embd_name + '_raw_2',
                cfg.OUTPUT_EMBEDDING_DIM, cfg.OUTPUT_EMBEDDING_DIM,
                weight_init=('GaussianFill', {'std': 0.01}),
                bias_init=('ConstantFill', {'value': 0.}))
            model.Relu(obj_embd_name + '_raw_1', obj_embd_name + '_raw_1')
            model.add_FC_layer_with_weight_name(
                'lang_sbj_and_obj_2',
                obj_embd_name + '_raw_1',
                obj_embd_name + '_raw_2',
                cfg.OUTPUT_EMBEDDING_DIM, cfg.OUTPUT_EMBEDDING_DIM,
                weight_init=('GaussianFill', {'std': 0.01}),
                bias_init=('ConstantFill', {'value': 0.}))
            model.Relu(rel_embd_name + '_raw_1', rel_embd_name + '_raw_1')
            model.add_FC_layer_with_weight_name(
                'lang_rel_2',
                rel_embd_name + '_raw_1',
                rel_embd_name + '_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(sbj_embd_name + '_raw_2', sbj_embd_name + '_raw_2')
                model.add_FC_layer_with_weight_name(
                    'lang_sbj_and_obj_3',
                    sbj_embd_name + '_raw_2',
                    sbj_embd_name + '_raw_3',
                    cfg.OUTPUT_EMBEDDING_DIM, cfg.OUTPUT_EMBEDDING_DIM,
                    weight_init=('GaussianFill', {'std': 0.01}),
                    bias_init=('ConstantFill', {'value': 0.}))
                model.Relu(obj_embd_name + '_raw_2', obj_embd_name + '_raw_2')
                model.add_FC_layer_with_weight_name(
                    'lang_sbj_and_obj_3',
                    obj_embd_name + '_raw_2',
                    obj_embd_name + '_raw_3',
                    cfg.OUTPUT_EMBEDDING_DIM, cfg.OUTPUT_EMBEDDING_DIM,
                    weight_init=('GaussianFill', {'std': 0.01}),
                    bias_init=('ConstantFill', {'value': 0.}))
                model.Relu(rel_embd_name + '_raw_2', rel_embd_name + '_raw_2')
                model.add_FC_layer_with_weight_name(
                    'lang_rel_3',
                    rel_embd_name + '_raw_2',
                    rel_embd_name + '_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(sbj_embd_name + '_raw_3', sbj_embd_name)
                model.net.Normalize(obj_embd_name + '_raw_3', obj_embd_name)
                model.net.Normalize(rel_embd_name + '_raw_3', rel_embd_name)
            else:
                # language embeddings must be normalized
                model.net.Normalize(sbj_embd_name + '_raw_2', sbj_embd_name)
                model.net.Normalize(obj_embd_name + '_raw_2', obj_embd_name)
                model.net.Normalize(rel_embd_name + '_raw_2', rel_embd_name)
        else:
            # language embeddings must be normalized
            model.net.Normalize(sbj_embd_name + '_raw_1', sbj_embd_name)
            model.net.Normalize(obj_embd_name + '_raw_1', obj_embd_name)
            model.net.Normalize(rel_embd_name + '_raw_1', rel_embd_name)
    else:
        # everything is already normalized
        model.net.Alias(sbj_vecs_name, sbj_embd_name)
        model.net.Alias(obj_vecs_name, obj_embd_name)
        model.net.Alias(rel_vecs_name, rel_embd_name)