Ejemplo n.º 1
0
def exp_concat_with_glove():
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=[
            'embed_dim',
            'xform',
            'glove_dim'])

    exp_name = f'concat_with_glove_{args.glove_dim}' # alt. xformed_
    out_base_dir = os.path.join(
        os.getcwd(),
        f'symlinks/exp/multi_sense_cooccur/{args.xform}_{args.embed_dim}')
    exp_const = ExpConstants(exp_name,out_base_dir)

    visual_embed_dir = exp_const.out_base_dir
    data_const = Constants()
    data_const.visual_word_to_idx = os.path.join(
        visual_embed_dir,
        'word_to_idx.json')
    data_const.visual_embeddings_npy = os.path.join(
        visual_embed_dir,
        'visual_embeddings.npy') # alt. _xformed.npy
    glove_const = GloveConstantsFactory.create(dim=str(args.glove_dim))
    data_const.glove_idx = glove_const.word_to_idx_json
    data_const.glove_h5py = glove_const.embeddings_h5py

    concat_with_glove.main(exp_const,data_const)
Ejemplo n.º 2
0
def exp_gen_and_label_hoi_cand():
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=['subset'],
        optional_args=['gen_hoi_cand', 'label_hoi_cand'])
    if len(not_specified_args) > 0:
        return

    exp_name = 'hoi_candidates'
    exp_const = ExpConstants(exp_name=exp_name)
    exp_const.subset = args.subset

    data_const = HicoConstants()
    data_const.selected_dets_hdf5 = os.path.join(
        os.getcwd(),
        'data_symlinks/hico_exp/select_confident_boxes_in_hico/' + \
        'selected_coco_cls_dets.hdf5')

    if args.gen_hoi_cand:
        print('Generating HOI candidates from Faster-RCNN dets...')
        hoi_candidates.generate(exp_const, data_const)

    if args.label_hoi_cand:
        print('Labelling HOI candidates from Faster-RCNN dets...')
        data_const.hoi_cand_hdf5 = os.path.join(
            exp_const.exp_dir, f'hoi_candidates_{exp_const.subset}.hdf5')
        label_hoi_candidates.assign(exp_const, data_const)
Ejemplo n.º 3
0
def exp_vis_pca_tsne():
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=[
            'embed_dim',
            'xform',
            'glove_dim'])
    exp_name = f'{args.xform}_{args.embed_dim}'
    out_base_dir = os.path.join(
        os.getcwd(),
        f'symlinks/exp/multi_sense_cooccur')
    exp_const = ExpConstants(exp_name,out_base_dir)
    exp_const.vis_dir = os.path.join(exp_const.exp_dir,'vis/tsne')
    exp_const.category_words_only = True

    data_const = Constants()
    embed_dir = os.path.join(
        exp_const.exp_dir,
        f'concat_with_glove_{args.glove_dim}')
    data_const.word_vecs_h5py = os.path.join(
        embed_dir,
        'visual_word_vecs.h5py')
    data_const.word_to_idx_json = os.path.join(
        embed_dir,
        'visual_word_vecs_idx.json')
    genome_const = VisualGenomeConstants()
    data_const.object_freqs_json = genome_const.object_freqs_json
    data_const.attribute_freqs_json = genome_const.attribute_freqs_json
    
    pca_tsne.main(exp_const,data_const)
Ejemplo n.º 4
0
def _exp_top_boxes_per_hoi(out_base_dir, data_const):
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=['model_num'],
        optional_args=[
            'verb_given_appearance',
            'verb_given_human_appearance',
            'verb_given_object_appearance',
            'verb_given_boxes_and_object_label',
            'verb_given_human_pose',
            'rcnn_det_prob'])

    exp_name = 'factors'
    if args.rcnn_det_prob:
        exp_name += '_rcnn_det_prob'
    if args.verb_given_appearance:
        exp_name += '_appearance'
    if args.verb_given_human_appearance:
        exp_name += '_human_appearance'
    if args.verb_given_object_appearance:
        exp_name += '_object_appearance'
    if args.verb_given_boxes_and_object_label:
        exp_name += '_boxes_and_object_label'
    if args.verb_given_human_pose:
        exp_name += '_human_pose'

    exp_const = ExpConstants(
        exp_name=exp_name,
        out_base_dir=out_base_dir)
    exp_const.model_dir = os.path.join(exp_const.exp_dir,'models')
    exp_const.num_to_vis = 10

    data_const.pred_hoi_dets_h5py = os.path.join(
        exp_const.exp_dir,
        f'pred_hoi_dets_test_{args.model_num}.hdf5')
    hoi_cand_dir = os.path.join(
        os.getcwd(),
        'data_symlinks/hico_exp/hoi_candidates')
    data_const.human_pose_feats_hdf5 = os.path.join(
        hoi_cand_dir,
        'human_pose_feats_test.hdf5')
    data_const.num_pose_keypoints = 18
    
    model_const = Constants()
    model_const.model_num = args.model_num
    model_const.hoi_classifier = HoiClassifierConstants()
    model_const.hoi_classifier.verb_given_appearance = args.verb_given_appearance
    model_const.hoi_classifier.verb_given_boxes_and_object_label = args.verb_given_boxes_and_object_label
    model_const.hoi_classifier.verb_given_human_pose = args.verb_given_human_pose
    model_const.hoi_classifier.rcnn_det_prob = args.rcnn_det_prob
    model_const.hoi_classifier.model_pth = os.path.join(
        exp_const.model_dir,
        f'hoi_classifier_{model_const.model_num}')

    vis_top_boxes_per_hoi.main(exp_const, data_const, model_const)
Ejemplo n.º 5
0
def _exp_cache_box_feats(exp_const, data_const):
    args = parser.parse_args()

    not_specified_args = manage_required_args(args,
                                              parser,
                                              required_args=['subset'])

    exp_const.subset = args.subset
    data_const.hoi_cand_hdf5 = os.path.join(
        exp_const.exp_dir, f'hoi_candidates_{exp_const.subset}.hdf5')

    cache_box_features.main(exp_const, data_const)
Ejemplo n.º 6
0
def _exp_eval(out_base_dir, data_const):
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=['model_num'],
        optional_args=[
            'verb_given_appearance',
            'verb_given_human_appearance',
            'verb_given_object_appearance',
            'verb_given_boxes_and_object_label',
            'verb_given_human_pose',
            'rcnn_det_prob'])

    exp_name = 'factors'
    if args.rcnn_det_prob:
        exp_name += '_rcnn_det_prob'
    if args.verb_given_appearance:
        exp_name += '_appearance'
    if args.verb_given_human_appearance:
        exp_name += '_human_appearance'
    if args.verb_given_object_appearance:
        exp_name += '_object_appearance'
    if args.verb_given_boxes_and_object_label:
        exp_name += '_boxes_and_object_label'
    if args.verb_given_human_pose:
        exp_name += '_human_pose'

    exp_const = ExpConstants(
        exp_name=exp_name,
        out_base_dir=out_base_dir)
    exp_const.model_dir = os.path.join(exp_const.exp_dir, 'models')
    data_const.balanced_sampling = False
    
    model_const = Constants()
    model_const.model_num = args.model_num
    model_const.hoi_classifier = HoiClassifierConstants()
    model_const.hoi_classifier.verb_given_appearance = args.verb_given_appearance
    model_const.hoi_classifier.verb_given_human_appearance = args.verb_given_human_appearance
    model_const.hoi_classifier.verb_given_object_appearance = args.verb_given_object_appearance
    model_const.hoi_classifier.verb_given_boxes_and_object_label = args.verb_given_boxes_and_object_label
    model_const.hoi_classifier.verb_given_human_pose = args.verb_given_human_pose
    model_const.hoi_classifier.rcnn_det_prob = args.rcnn_det_prob
    model_const.hoi_classifier.model_pth = os.path.join(
        exp_const.model_dir,
        f'hoi_classifier_{model_const.model_num}')

    if isinstance(data_const, FeatureConstantsVcoco):
        data_sign = 'vcoco'
    else:
        data_sign = 'hico'
    evaluate.main(exp_const, data_const, model_const, data_sign)
Ejemplo n.º 7
0
def _exp_assign_pose_to_human_cand(exp_const, data_const):
    args = parser.parse_args()

    not_specified_args = manage_required_args(args,
                                              parser,
                                              required_args=['subset'])

    exp_const.subset = args.subset
    data_const.hoi_cand_hdf5 = os.path.join(
        exp_const.exp_dir, f'hoi_candidates_{exp_const.subset}.hdf5')
    data_const.human_pose_dir = os.path.join(data_const.proc_dir, 'human_pose')
    data_const.num_keypoints = 18

    assign_pose_to_human_candidates.main(exp_const, data_const)
Ejemplo n.º 8
0
def exp_extract_embeddings():
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=[
            'embed_dim',
            'xform',
            'model_num',
            'syn'])

    exp_name = f'{args.xform}_{args.embed_dim}'
    out_base_dir = os.path.join(
        os.getcwd(),
        'symlinks/exp/multi_sense_cooccur')
    exp_const = ExpConstants(exp_name,out_base_dir)
    exp_const.model_dir = os.path.join(exp_const.exp_dir,'models')
    exp_const.cooccur_types = [
        'syn',
        'attr_attr',
        'obj_attr',
        'obj_hyp',
        'context'
    ]
    if args.syn==False:
        exp_const.cooccur_types = exp_const.cooccur_types[1:]

    data_const = MultiSenseCooccurDatasetConstants()
    data_const.cooccur_csv = os.path.join(
        os.getcwd(),
        'symlinks/exp/multi_sense_cooccur/cooccurrences/merged_cooccur.csv')

    model_const = Constants()
    model_const.model_num = args.model_num
    model_const.net = LogBilinearConstants()
    model_const.net.num_words = 93553
    model_const.net.embed_dims = args.embed_dim
    model_const.net.two_embedding_layers = False
    model_const.net.xform_type = args.xform
    model_const.net.xform_num_layers = None
    model_const.net.use_bias = True
    model_const.net.use_fx = False
    model_const.net.cooccur_types = copy.deepcopy(exp_const.cooccur_types)
    model_const.net_path = os.path.join(
        exp_const.model_dir,
        f'net_{model_const.model_num}')

    extract_embeddings.main(exp_const,data_const,model_const)
    extract_embeddings_xformed.main(exp_const,data_const,model_const)
Ejemplo n.º 9
0
def _exp_train(out_base_dir,
               data_const_train,
               data_const_val,
               data_sign='hico'):
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=['imgs_per_batch', 'fp_to_tp_ratio'],
        optional_args=[
            'verb_given_appearance', 'verb_given_human_appearance',
            'verb_given_object_appearance',
            'verb_given_boxes_and_object_label', 'verb_given_human_pose',
            'rcnn_det_prob'
        ])

    exp_name = 'factors'
    if args.rcnn_det_prob:
        exp_name += '_rcnn_det_prob'
    if args.verb_given_appearance:
        exp_name += '_appearance'
    if args.verb_given_human_appearance:
        exp_name += '_human_appearance'
    if args.verb_given_object_appearance:
        exp_name += '_object_appearance'
    if args.verb_given_boxes_and_object_label:
        exp_name += '_boxes_and_object_label'
    if args.verb_given_human_pose:
        pose = '_human_pose'
        exp_name += pose

    exp_const = ExpConstants(exp_name=exp_name, out_base_dir=out_base_dir)
    exp_const.log_dir = os.path.join(exp_const.exp_dir, 'log')
    exp_const.model_dir = os.path.join(exp_const.exp_dir, 'models')
    exp_const.num_epochs = 10
    exp_const.imgs_per_batch = args.imgs_per_batch
    exp_const.lr = 1e-3

    model_const = Constants()
    model_const.hoi_classifier = HoiClassifierConstants(data_sign)
    model_const.hoi_classifier.verb_given_appearance = args.verb_given_appearance
    model_const.hoi_classifier.verb_given_human_appearance = args.verb_given_human_appearance
    model_const.hoi_classifier.verb_given_object_appearance = args.verb_given_object_appearance
    model_const.hoi_classifier.verb_given_boxes_and_object_label = args.verb_given_boxes_and_object_label
    model_const.hoi_classifier.verb_given_human_pose = args.verb_given_human_pose
    model_const.hoi_classifier.rcnn_det_prob = args.rcnn_det_prob

    train.main(exp_const, data_const_train, data_const_val, model_const,
               data_sign)
Ejemplo n.º 10
0
def exp_cache_pose_feats():
    args = parser.parse_args()

    not_specified_args = manage_required_args(args,
                                              parser,
                                              required_args=['subset'])

    exp_name = 'hoi_candidates'
    exp_const = ExpConstants(exp_name=exp_name)
    exp_const.subset = args.subset

    data_const = HicoConstants()
    data_const.hoi_cand_hdf5 = os.path.join(
        exp_const.exp_dir, f'hoi_candidates_{exp_const.subset}.hdf5')
    data_const.human_cands_pose_hdf5 = os.path.join(
        exp_const.exp_dir, f'human_candidates_pose_{exp_const.subset}.hdf5')
    data_const.num_keypoints = 18

    cache_pose_features.main(exp_const, data_const)
Ejemplo n.º 11
0
def _exp_gen_and_label_hoi_cand(exp_const, data_const, data_sign='hico'):
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=['subset'],
        optional_args=['gen_hoi_cand', 'label_hoi_cand'])
    if len(not_specified_args) > 0:
        return

    exp_const.subset = args.subset

    if args.gen_hoi_cand:
        print('Generating HOI candidates from Faster-RCNN dets...')
        hoi_candidates.generate(exp_const, data_const, data_sign)

    if args.label_hoi_cand:
        print('Labelling HOI candidates from Faster-RCNN dets...')
        data_const.hoi_cand_hdf5 = os.path.join(
            exp_const.exp_dir, f'hoi_candidates_{exp_const.subset}.hdf5')
        label_hoi_candidates.assign(exp_const, data_const)
Ejemplo n.º 12
0
def exp_train():
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=['fappend', 'imgs_per_batch', 'fp_to_tp_ratio'],
        optional_args=[
            'verb_given_appearance', 'verb_given_human_appearance',
            'verb_given_object_appearance',
            'verb_given_boxes_and_object_label', 'rcnn_det_prob'
        ])

    exp_name = 'factors'
    exp_name += '_' + args.fappend

    out_base_dir = os.path.join(os.getcwd(),
                                'data_symlinks/hico_exp/hoi_classifier')
    exp_const = ExpConstants(exp_name=exp_name, out_base_dir=out_base_dir)
    exp_const.log_dir = os.path.join(exp_const.exp_dir, 'log')
    exp_const.model_dir = os.path.join(exp_const.exp_dir, 'models')
    exp_const.num_epochs = 10
    exp_const.imgs_per_batch = args.imgs_per_batch
    exp_const.lr = 1e-3

    data_const_train = FeatureConstants(subset='train')
    data_const_val = FeatureConstants(subset='val')

    model_const = Constants()
    model_const.hoi_classifier = HoiClassifierConstants()
    model_const.hoi_classifier.verb_given_appearance = args.verb_given_appearance
    model_const.hoi_classifier.verb_given_human_appearance = args.verb_given_human_appearance
    model_const.hoi_classifier.verb_given_object_appearance = args.verb_given_object_appearance
    model_const.hoi_classifier.verb_given_boxes_and_object_label = args.verb_given_boxes_and_object_label
    model_const.hoi_classifier.verb_given_human_pose = args.verb_given_human_pose
    model_const.hoi_classifier.rcnn_det_prob = args.rcnn_det_prob

    train.main(exp_const, data_const_train, data_const_val, model_const)
Ejemplo n.º 13
0
def exp_eval():
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=['fappend', 'model_num'],
        optional_args=[
            'verb_given_appearance', 'verb_given_human_appearance',
            'verb_given_object_appearance',
            'verb_given_boxes_and_object_label', 'verb_given_human_pose',
            'rcnn_det_prob'
        ])

    exp_name = 'factors'
    exp_name += '_' + args.fappend

    out_base_dir = os.path.join(os.getcwd(),
                                'data_symlinks/hico_exp/hoi_classifier')
    exp_const = ExpConstants(exp_name=exp_name, out_base_dir=out_base_dir)
    exp_const.model_dir = os.path.join(exp_const.exp_dir, 'models')

    data_const = FeatureConstants(subset='test')
    data_const.balanced_sampling = False

    model_const = Constants()
    model_const.model_num = args.model_num
    model_const.hoi_classifier = HoiClassifierConstants()
    model_const.hoi_classifier.verb_given_appearance = args.verb_given_appearance
    model_const.hoi_classifier.verb_given_human_appearance = args.verb_given_human_appearance
    model_const.hoi_classifier.verb_given_object_appearance = args.verb_given_object_appearance
    model_const.hoi_classifier.verb_given_boxes_and_object_label = args.verb_given_boxes_and_object_label
    model_const.hoi_classifier.verb_given_human_pose = args.verb_given_human_pose
    model_const.hoi_classifier.rcnn_det_prob = args.rcnn_det_prob
    model_const.hoi_classifier.model_pth = os.path.join(
        exp_const.model_dir, f'hoi_classifier_{model_const.model_num}')
    evaluate.main(exp_const, data_const, model_const)
Ejemplo n.º 14
0
def exp_eval_concat_svm():
    args = parser.parse_args()
    not_specified_args = manage_required_args(args,
                                              parser,
                                              required_args=[
                                                  'batch_size',
                                                  'glove_dim',
                                                  'embed_linear_feat',
                                                  'embed_quadratic_feat',
                                                  'distance_linear_feat',
                                                  'distance_quadratic_feat',
                                                  'visual_only',
                                                  'visual_vocab_json',
                                              ],
                                              optional_args=[
                                                  'exp_name', 'out_base_dir',
                                                  'embeddings_h5py',
                                                  'word_to_idx_json'
                                              ])

    if args.exp_name is None:
        exp_name = 'trial'
    else:
        exp_name = args.exp_name

    if args.out_base_dir is None:
        out_base_dir = os.path.join(os.getcwd(),
                                    'symlinks/exp/semeval_2018_10/concat_svm')
    else:
        out_base_dir = args.out_base_dir

    exp_const = ExpConstants(exp_name=exp_name, out_base_dir=out_base_dir)
    exp_const.model_dir = os.path.join(exp_const.exp_dir, 'models')
    exp_const.batch_size = 2560

    data_const = SemEval201810DatasetConstants()
    data_const.subset = 'test'
    if args.embeddings_h5py is None:
        glove_const = GloveConstantsFactory.create()
        data_const.embeddings_h5py = glove_const.embeddings_h5py
        data_const.word_to_idx_json = glove_const.word_to_idx_json
        data_const.visual_vocab_json = data_const.word_to_idx_json
    else:
        data_const.embeddings_h5py = args.embeddings_h5py
        data_const.word_to_idx_json = args.word_to_idx_json
        data_const.visual_vocab_json = args.visual_vocab_json
    # data_const.vocab_json = os.path.join(
    #     os.getcwd(),
    #     'symlinks/data/visualgenome/proc/all_word_freqs.json')
    # data_const.visual_vocab_json = os.path.join(
    #     os.getcwd(),
    #     'symlinks/exp/combine_glove_visual_reps/concat_glove_visual_avg_reps/visual_words.json')

    embed_dim = h5py.File(data_const.embeddings_h5py,
                          'r')['embeddings'].shape[1]

    model_const = Constants()
    model_const.concat_svm = ConcatSVMConstants()
    model_const.concat_svm.embedding_dim = embed_dim
    model_const.concat_svm.glove_dim = args.glove_dim
    model_const.concat_svm.layer_units = []
    model_const.concat_svm.use_embedding_linear_feats = args.embed_linear_feat
    model_const.concat_svm.use_embedding_quadratic_feats = \
        args.embed_quadratic_feat
    model_const.concat_svm.use_distance_linear_feats = args.distance_linear_feat
    model_const.concat_svm.use_distance_quadratic_feats = \
        args.distance_quadratic_feat
    model_const.concat_svm.visual_only = args.visual_only

    eval_concat_svm.main(exp_const, data_const, model_const)
Ejemplo n.º 15
0
def exp_train():
    args = parser.parse_args()
    not_specified_args = manage_required_args(args,
                                              parser,
                                              required_args=[
                                                  'held_classes', 'embed_type',
                                                  'glove_dim', 'vico_dim',
                                                  'run'
                                              ],
                                              optional_args=[])
    exp_name = \
        args.embed_type + '_' + \
        str(args.glove_dim) + '_' + \
        str(args.vico_dim) + '_' + \
        'held_classes_' + str(args.held_classes)
    out_base_dir = os.path.join(os.getcwd(),
                                f'symlinks/exp/cifar100/zero_shot_{args.run}')
    exp_const = ExpConstants(exp_name, out_base_dir)
    exp_const.model_dir = os.path.join(exp_const.exp_dir, 'models')
    exp_const.log_dir = os.path.join(exp_const.exp_dir, 'log')
    exp_const.vis_dir = os.path.join(exp_const.exp_dir, 'vis')
    exp_const.log_step = 200
    exp_const.model_save_step = 1000
    exp_const.val_step = 1000
    exp_const.batch_size = 128
    exp_const.num_epochs = 50  #100
    exp_const.lr = 0.01
    exp_const.momentum = 0.9
    exp_const.num_workers = 5
    exp_const.optimizer = 'Adam'
    exp_const.feedforward = False
    exp_const.subset = {'training': 'train', 'test': 'test'}

    data_const = Cifar100DatasetConstants()
    data_const.num_held_out_classes = args.held_classes

    model_const = Constants()
    model_const.model_num = None
    model_const.net = ResnetConstants()
    model_const.net.num_layers = 32
    model_const.net.num_classes = 100
    model_const.net.pretrained = False
    model_const.net_path = os.path.join(exp_const.model_dir,
                                        f'net_{model_const.model_num}')
    model_const.embed2class = Embed2ClassConstants()
    model_const.embed2class.linear = True
    model_const.embed2class_path = os.path.join(
        exp_const.model_dir, f'embed2class_{model_const.model_num}')
    model_const.embed2class.glove_dim = args.glove_dim

    # Dimensions
    if args.embed_type == 'glove':
        model_const.embed2class.embed_dims = args.glove_dim
        model_const.embed2class.embed_h5py = os.path.join(
            os.getcwd(),
            f'symlinks/data/glove/proc/glove_6B_{args.glove_dim}d.h5py')
        model_const.embed2class.embed_word_to_idx_json = os.path.join(
            os.getcwd(),
            f'symlinks/data/glove/proc/glove_6B_{args.glove_dim}d_word_to_idx.json'
        )
    elif args.embed_type == 'glove_vico_linear':
        model_const.embed2class.embed_dims = args.glove_dim + args.vico_dim
        embed_dir = os.path.join(
            os.getcwd(),
            'symlinks/exp/multi_sense_cooccur/' + \
            f'linear_100/concat_with_glove_{args.glove_dim}')
        model_const.embed2class.embed_h5py = os.path.join(
            embed_dir, 'visual_word_vecs.h5py')
        model_const.embed2class.embed_word_to_idx_json = os.path.join(
            embed_dir, 'visual_word_vecs_idx.json')
    elif args.embed_type == 'vico_linear':
        model_const.embed2class.no_glove = True  # Zero out the glove component
        model_const.embed2class.embed_dims = args.glove_dim + args.vico_dim
        embed_dir = os.path.join(
            os.getcwd(),
            'symlinks/exp/multi_sense_cooccur/' + \
            f'linear_100/concat_with_glove_{args.glove_dim}')
        model_const.embed2class.embed_h5py = os.path.join(
            embed_dir, 'visual_word_vecs.h5py')
        model_const.embed2class.embed_word_to_idx_json = os.path.join(
            embed_dir, 'visual_word_vecs_idx.json')
    elif args.embed_type == 'glove_vico_select':
        model_const.embed2class.embed_dims = args.glove_dim + args.vico_dim
        embed_dir = os.path.join(
            os.getcwd(),
            'symlinks/exp/multi_sense_cooccur/' + \
            f'select_200/concat_with_glove_{args.glove_dim}')
        model_const.embed2class.embed_h5py = os.path.join(
            embed_dir, 'visual_word_vecs.h5py')
        model_const.embed2class.embed_word_to_idx_json = os.path.join(
            embed_dir, 'visual_word_vecs_idx.json')
    else:
        err_str = f'{args.embed_type} is currently not implemented in the runner'
        assert (False), err_str

    train.main(exp_const, data_const, model_const)
Ejemplo n.º 16
0
def exp_train():
    args = parser.parse_args()
    not_specified_args = manage_required_args(
        args,
        parser,
        required_args=[
            'embed_dim',
            'xform',
            'model_num',
            'syn'])

    exp_name = f'{args.xform}_{args.embed_dim}'
    out_base_dir = os.path.join(
        os.getcwd(),
        'symlinks/exp/multi_sense_cooccur')
    exp_const = ExpConstants(exp_name,out_base_dir)
    exp_const.model_dir = os.path.join(exp_const.exp_dir,'models')
    exp_const.log_dir = os.path.join(exp_const.exp_dir,'log')
    exp_const.vis_dir = os.path.join(exp_const.exp_dir,'vis')
    exp_const.log_step = 100
    exp_const.model_save_step = 10000
    exp_const.batch_size = 1000
    exp_const.num_epochs = 10
    exp_const.lr = 0.01
    exp_const.momentum = 0.9    # used only when optimizer is set to 'SGD'
    exp_const.num_workers = 5
    # First train with Adam then finetune with Adagrad
    if args.model_num==-1:
        exp_const.optimizer = 'Adam'
    else:
        exp_const.optimizer = 'Adagrad'
    exp_const.weight_decay = 0
    exp_const.cooccur_weights = {
        'syn': 1,
        'attr_attr': 1,
        'obj_attr': 1,
        'obj_hyp': 1,
        'context': 1,
    }
    if args.syn==False:
        del exp_const.cooccur_weights['syn']

    exp_const.use_neg = True
    
    data_const = MultiSenseCooccurDatasetConstants()
    data_const.cooccur_csv = os.path.join(
        os.getcwd(),
        'symlinks/exp/multi_sense_cooccur/cooccurrences/merged_cooccur.csv')
    data_const.use_self_count = True

    model_const = Constants()
    if args.model_num==-1:
        model_const.model_num = None
    else:
        model_const.model_num = args.model_num
    model_const.net = LogBilinearConstants()
    model_const.net.num_words = 93553
    model_const.net.embed_dims = args.embed_dim
    model_const.net.two_embedding_layers = False
    model_const.net.xform_type = args.xform
    model_const.net.xform_num_layers = None
    model_const.net.use_bias = True
    model_const.net.use_fx = False
    model_const.net.cooccur_types = [
        'syn',
        'attr_attr',
        'obj_attr',
        'obj_hyp',
        'context'
    ]
    if args.syn==False:
        model_const.net.cooccur_types = model_const.net.cooccur_types[1:]

    model_const.net_path = os.path.join(
        exp_const.model_dir,
        f'net_{model_const.model_num}')

    train.main(exp_const,data_const,model_const)
Ejemplo n.º 17
0
def exp_train_concat_svm():
    args = parser.parse_args()
    not_specified_args = manage_required_args(args,
                                              parser,
                                              required_args=[
                                                  'lr',
                                                  'l2_weight',
                                                  'batch_size',
                                                  'glove_dim',
                                                  'embed_linear_feat',
                                                  'embed_quadratic_feat',
                                                  'distance_linear_feat',
                                                  'distance_quadratic_feat',
                                                  'visual_only',
                                              ],
                                              optional_args=[
                                                  'exp_name', 'out_base_dir',
                                                  'embeddings_h5py',
                                                  'word_to_idx_json'
                                              ])

    if args.exp_name is None:
        exp_name = 'trial'
    else:
        exp_name = args.exp_name

    if args.out_base_dir is None:
        out_base_dir = os.path.join(os.getcwd(),
                                    'symlinks/exp/semeval_2018_10/concat_svm')
    else:
        out_base_dir = args.out_base_dir

    exp_const = ExpConstants(exp_name=exp_name, out_base_dir=out_base_dir)
    exp_const.log_dir = os.path.join(exp_const.exp_dir, 'log')
    exp_const.model_dir = os.path.join(exp_const.exp_dir, 'models')
    exp_const.num_epochs = 20
    exp_const.batch_size = args.batch_size
    exp_const.lr = args.lr

    data_const = SemEval201810DatasetConstants()
    if args.embeddings_h5py is None:
        glove_const = GloveConstantsFactory.create()
        data_const.embeddings_h5py = glove_const.embeddings_h5py
        data_const.word_to_idx_json = glove_const.word_to_idx_json
    else:
        data_const.embeddings_h5py = args.embeddings_h5py
        data_const.word_to_idx_json = args.word_to_idx_json

    embed_dim = h5py.File(data_const.embeddings_h5py,
                          'r')['embeddings'].shape[1]

    model_const = Constants()
    model_const.concat_svm = ConcatSVMConstants()
    model_const.concat_svm.l2_weight = args.l2_weight
    model_const.concat_svm.embedding_dim = embed_dim
    model_const.concat_svm.glove_dim = args.glove_dim
    model_const.concat_svm.layer_units = []
    model_const.concat_svm.use_embedding_linear_feats = args.embed_linear_feat
    model_const.concat_svm.use_embedding_quadratic_feats = \
        args.embed_quadratic_feat
    model_const.concat_svm.use_distance_linear_feats = args.distance_linear_feat
    model_const.concat_svm.use_distance_quadratic_feats = \
        args.distance_quadratic_feat
    model_const.concat_svm.visual_only = args.visual_only

    train_concat_svm.main(exp_const, data_const, model_const)