Ejemplo n.º 1
0
        dev_set.init_dataset(target_label)
        test_set.init_dataset(target_label)
        (
            dev_tids, dev_tokens, dev_labels, dev_lens
        ) = dev_set.get_dataset(max_seq_len, volatile=True, gpu=use_gpu)
        (
            test_tids, test_tokens, test_labels, test_lens
        ) = test_set.get_dataset(max_seq_len, volatile=True, gpu=use_gpu)

        best_dev_fscore = 0.0
        best_test_scores = None
        for epoch in range(max_epoch):
            epoch_start_time = current_time()
            epoch_loss = 0.0
            train_set.shuffle_dataset(target_label, balance=True)
            batch_num = train_set.batch_num(batch_size)
            for batch_idx in range(batch_num):
                optimizer.zero_grad()
                (
                    batch_tids, batch_tokens, batch_labels, batch_lens
                ) = train_set.get_batch(batch_size, gpu=use_gpu)
                model_output = model.forward(batch_tokens, batch_lens)
                loss = loss_func.forward(model_output, batch_labels)
                loss.backward()
                optimizer.step()

                epoch_loss += 1.0 / batch_num * float(loss)
            epoch_elapsed_time = current_time() - epoch_start_time

            # Evaluate the current model on dev and test sets
            dev_preds = model.forward(dev_tokens, dev_lens)