Example #1
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)
Example #2
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)