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)