Ejemplo n.º 1
0
def main():
    if len(sys.argv) > 1:
        name = ' '.join(sys.argv[1:])
    else:
        from datetime import datetime
        name = datetime.now().strftime("%Y-%m-%d_%H:%M:%S")
    target_name = os.path.join('logs', '{}.pth'.format(name))
    print('will save to {}'.format(target_name))

    cudnn.benchmark = True

    train_loader = data.get_loader(train=True)
    val_loader = data.get_loader(val=True)

    net = nn.DataParallel(model.Net(train_loader.dataset.num_tokens)).cuda()
    optimizer = optim.Adam([p for p in net.parameters() if p.requires_grad])

    net_var = nn.DataParallel(model.Uncertainty(config.max_answers)).cuda()
    optimizer_var = optim.SGD(
        [p for p in net_var.parameters() if p.requires_grad], lr=0.0002)

    tracker = utils.Tracker()

    ckp = torch.load('logs/2019-03-19_22:49:23.pth_9.pth')
    net.load_state_dict(ckp['weights'])
    net_var.load_state_dict(ckp['weights_var'])

    run(net,
        net_var,
        val_loader,
        optimizer,
        optimizer_var,
        tracker,
        train=False,
        prefix='val')
Ejemplo n.º 2
0
def main():
    if len(sys.argv) > 1:
        name = ' '.join(sys.argv[1:])
    else:
        from datetime import datetime
        name = datetime.now().strftime("%Y-%m-%d_%H:%M:%S")
    target_name = os.path.join('logs', '{}'.format(name))
    print('will save to {}'.format(target_name))

    cudnn.benchmark = True

    train_loader = data.get_loader(train=True)
    val_loader = data.get_loader(val=True)

    net = nn.DataParallel(model.Net(train_loader.dataset.num_tokens)).cuda()

    optimizer = optim.Adam([p for p in net.parameters() if p.requires_grad])
    tracker = utils.Tracker()
    config_as_dict = {k: v for k, v in vars(config).items() if not k.startswith('__')}

    net_dis = nn.DataParallel(model.Net_Discriminitor(196)).cuda()
    optimizer_dis = optim.Adam([p for p in net_dis.parameters() if p.requires_grad],lr = 0.0002, betas = (0.5, 0.999))
    

    # Uncomment the following lines while evaluating or want to start by loading checkpoint
    # ----------------------------------------

    ckp = torch.load('logs/2018-10-28_12:47:45_180.pth')
    name = ckp['name']
    # tracker = ckp['tracker']
    config_as_dict = ckp['config']
    net.load_state_dict(ckp['weights'])
    net_dis.load_state_dict(ckp['weights_grad'])
    train_loader.dataset.vocab = ckp['vocab']

    # ----------------------------------------

    for i in range(0, config.epochs):
        _ = run(net,net_dis, train_loader, optimizer,optimizer_dis, tracker, train=True, prefix='train', epoch=i)
        r = run(net,net_dis, val_loader, optimizer, optimizer_dis,tracker, train=False, prefix='val', epoch=i)

        results = {
            'name': name,
            'tracker': tracker.to_dict(),
            'config': config_as_dict,
            'weights': net.state_dict(),
            'weights_grad': net_dis.state_dict(),
            'eval': {
                'answers': r[0],
                'accuracies': r[1],
                'idx': r[2],
            },
            'vocab': train_loader.dataset.vocab,
        }
        torch.save(results, target_name+"_"+str(i)+".pth")