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)