Пример #1
0
def main(config):
    os.chdir(hydra.utils.get_original_cwd())
    config.parameters.model = config.opt.usemodel
    config.parameters.wrdim = config.opt.worddim
    config.parameters.ptrnd = config.opt.pretrnd

    use_dataset = config.opt.dataset
    dataset_path = os.path.join('datasets', use_dataset)

    tz = datetime.timezone(datetime.timedelta(hours=3))
    dt = datetime.datetime.now(tz=tz)
    date_path = f'{dt.date()}'
    time_path = f'{dt.time()}'.replace(':', '-').split('.')[0]

    result_path = os.path.join(config.opt.result_path, use_dataset, date_path,
                               time_path)
    # model_name = config.opt.usemodel
    # model_load = config.opt.reload
    loader = Loader()

    log.info(f'Model: {config.opt.usemodel}')
    log.info(f'Dataset: {use_dataset}')

    if not os.path.exists(result_path):
        os.makedirs(result_path)

    if not os.path.exists(os.path.join(result_path, config.opt.usemodel)):
        os.makedirs(os.path.join(result_path, config.opt.usemodel))

    with open(os.path.join(result_path, config.opt.usemodel, 'params'),
              'wt') as fobj:
        for param in config.parameters:
            fobj.write(f'{param}:\t{config.parameters[param]}\n')

    if use_dataset == 'conll':
        train_data, dev_data, test_data, test_train_data, mappings = loader.load_conll(
            dataset_path, config.parameters)
    elif use_dataset == 'ontonotes':
        train_data, dev_data, test_data, mappings = loader.load_ontonotes(
            dataset_path, config.parameters)
        test_train_data = train_data[-10000:]
    else:
        raise KeyError('unknown dataset name')

    log.info('Load Complete')

    model = make_model(config, mappings, result_path)

    model.cuda()
    learning_rate = config.parameters['lrate']
    log.info(f'Initial learning rate is: {learning_rate:.6f}')
    optimizer = torch.optim.SGD(model.parameters(),
                                lr=learning_rate,
                                momentum=0.9)

    trainer = Trainer(model,
                      optimizer,
                      result_path,
                      config.opt.usemodel,
                      usedataset=config.opt.dataset,
                      mappings=mappings)
    losses, all_F = trainer.train_model(
        config.opt.num_epochs,
        train_data,
        dev_data,
        test_train_data,
        test_data,
        learning_rate=learning_rate,
        batch_size=config.parameters['batch_size'],
        lr_decay=config.opt.lr_decay)

    plt.plot(losses)
    plt.savefig(os.path.join(result_path, config.opt.usemodel, 'lossplot.png'))
Пример #2
0
if model_load:
    print ('Loading Saved Data points....................................................................')
    acquisition_path = os.path.join(result_path, model_name, 'active_checkpoint', acquire_method,
                                    checkpoint, 'acquisition2.p')
    acquisition_function = pkl.load(open(acquisition_path,'rb'))
    
else:       
    acquisition_function = Acquisition(train_data, init_percent=init_percent, seed=0, 
                                           acq_mode = parameters['acqmd'])
    
model.cuda()
learning_rate = parameters['lrate']
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate, momentum=0.9)

trainer = Trainer(model, optimizer, result_path, model_name, usedataset=opt.dataset, mappings= mappings)

active_train_data = [train_data[i] for i in acquisition_function.train_index]
tokens_acquired = sum([len(x['words']) for x in active_train_data])

num_acquisitions_required = 25
acquisition_strat_all = [2]*24 + [5]*10 + [0]
acquisition_strat = acquisition_strat_all[:num_acquisitions_required]

for acquire_percent in acquisition_strat:
    
    checkpoint_folder = os.path.join('active_checkpoint',acquire_method, str(tokens_acquired).zfill(8))
    checkpoint_path = os.path.join(result_path, model_name, checkpoint_folder)
    if not os.path.exists(checkpoint_path):
        os.makedirs(checkpoint_path)
        
Пример #3
0
                                char_vocab_size,
                                char_embedding_dim,
                                char_out_channels,
                                decoder_hidden_units,
                                tag_to_id,
                                sigma_prior=sigma_prior,
                                pretrained=word_embeds)

model.cuda()
learning_rate = parameters['lrate']
print('Initial learning rate is: %s' % (learning_rate))
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate, momentum=0.9)

trainer = Trainer(model,
                  optimizer,
                  result_path,
                  model_name,
                  usedataset=opt.dataset,
                  mappings=mappings)
losses, all_F = trainer.train_model(opt.num_epochs,
                                    train_data,
                                    dev_data,
                                    test_train_data,
                                    test_data,
                                    learning_rate=learning_rate,
                                    batch_size=parameters['batch_size'],
                                    lr_decay=0.05)

plt.plot(losses)
plt.savefig(os.path.join(result_path, model_name, 'lossplot.png'))