def initialize_model(gpu, vocab_size, v_vec, emb_requires_grad, args):
    emb_dim = args.emb_dim
    h_dim = None
    class_num = 2
    is_gpu = True
    if gpu == -1:
        is_gpu = False
    if args.emb_type == 'ELMo' or args.emb_type == 'ELMoForManyLangs':
        bilstm = BiLSTM(emb_dim,
                        h_dim,
                        class_num,
                        vocab_size,
                        is_gpu,
                        v_vec,
                        emb_type=args.emb_type,
                        elmo_model_dir=args.emb_path)
    elif args.emb_type == 'None':
        bilstm = BiLSTM(emb_dim,
                        h_dim,
                        class_num,
                        vocab_size,
                        is_gpu,
                        v_vec,
                        emb_type=args.emb_type)
    else:
        bilstm = BiLSTM(emb_dim,
                        h_dim,
                        class_num,
                        vocab_size,
                        is_gpu,
                        v_vec,
                        emb_type=args.emb_type)
    if is_gpu:
        bilstm = bilstm.cuda()

    for m in bilstm.modules():
        print(m.__class__.__name__)
        weights_init(m)

    if args.emb_type != 'ELMo' and args.emb_type != 'ELMoForManyLangs' and args.emb_type != 'None':
        for param in bilstm.word_embed.parameters():
            param.requires_grad = emb_requires_grad

    return bilstm
Exemplo n.º 2
0
def initialize_model(gpu, vocab_size, v_vec, dropout_ratio, n_layers, model,
                     statistics_of_each_case_type):
    is_gpu = True
    if gpu == -1:
        is_gpu = False
    if model == 'Base' or model == 'FT':
        bilstm = BiLSTM(vocab_size, v_vec, dropout_ratio, n_layers, gpu=is_gpu)
    elif model == 'OneH':
        bilstm = OneHot(vocab_size, v_vec, dropout_ratio, n_layers, gpu=is_gpu)
    elif model == 'FA':
        bilstm = FeatureAugmentation(vocab_size,
                                     v_vec,
                                     dropout_ratio,
                                     n_layers,
                                     gpu=is_gpu)
    elif model == 'CPS':
        bilstm = ClassProbabilityShift(
            vocab_size,
            v_vec,
            dropout_ratio,
            n_layers,
            statistics_of_each_case_type=statistics_of_each_case_type,
            gpu=is_gpu)
    elif model == 'MIX':
        bilstm = Mixture(
            vocab_size,
            v_vec,
            dropout_ratio,
            n_layers,
            statistics_of_each_case_type=statistics_of_each_case_type,
            gpu=is_gpu)
    if is_gpu:
        bilstm = bilstm.cuda()

    for m in bilstm.modules():
        print(m.__class__.__name__)
        weights_init(m)

    return bilstm