Esempio n. 1
0
    optimizer.add_hook(chainer.optimizer.WeightDecay(1e-4))
    scheduler = AdamScheduler(optimizer, 0.5, args.lr_step_list, 0)

    train_iterator = iterators.MultithreadIterator(train_dataset,
                                                   args.batch_size,
                                                   n_threads=args.nb_jobs)
    train_eval = Evaluator("train", args)
    valid_iterator = iterators.MultithreadIterator(valid_dataset,
                                                   args.batch_size,
                                                   False,
                                                   False,
                                                   n_threads=args.nb_jobs)
    valid_eval = Evaluator("valid", args)

    logger.info("Training...")
    train_eval.reset()
    st = time.time()

    # Training loop
    for iter_cnt, batch in enumerate(train_iterator):
        if iter_cnt == args.nb_iters:
            break
        chainer.config.train = True
        chainer.config.enable_backprop = True
        batch_array = [
            convert.concat_examples([x[idx] for x in batch], args.gpu)
            for idx in data_idxs
        ]
        model.cleargrads()
        loss, pred_y, _ = model(tuple(map(Variable, batch_array)))
        loss.backward()
    input("here")

    train_iterator = iterators.MultithreadIterator(train_dataset,
                                                   args.batch_size,
                                                   n_threads=args.nb_jobs)
    train_eval = Evaluator("train", args)
    valid_iterator = iterators.MultithreadIterator(valid_dataset,
                                                   args.batch_size,
                                                   False,
                                                   False,
                                                   n_threads=args.nb_jobs)
    valid_eval = Evaluator("valid", args)

    logger.info("Training...")
    train_eval.reset()
    st = time.time()
    total_loss = 0
    # Training loop
    for iter_cnt, batch in enumerate(train_iterator):
        if iter_cnt == args.nb_iters:
            break
        batch_array = [
            convert.concat_examples([x[idx] for x in batch], args.gpu)
            for idx in data_idxs
        ]
        batch_array = torch.FloatTensor([x.tolist() for x in batch_array])
        batch_array = Variable(batch_array)
        optimizer.zero_grad()  # zero out gradients

        loss, pred_y = net(batch_array)