コード例 #1
0
    def train_epoch(self, epoch_idx, model, train_batches):

        # Turn on training mode which enables dropout and BNorm.
        model.train()
        np.random.shuffle(train_batches)  # shuffling data
        running_losses = []
        epoch_losses = []

        num_train_batches = len(train_batches)
        bar = create_progress_bar('train_loss')

        for batch_idx in bar(range(num_train_batches)):
            self.optimizer.zero_grad()
            loss_var = self.train_step(model, train_batches[batch_idx])
            loss_data = loss_var.data[0]
            loss_var.backward()  # compute gradients
            self.optimizer.step()  # update weights

            running_losses = ([loss_data] + running_losses)[:20]
            bar.dynamic_messages['train_loss'] = np.mean(running_losses)
            epoch_losses.append(loss_data)

        epoch_loss_avg = np.mean(epoch_losses)

        return epoch_loss_avg
コード例 #2
0
def draw_prediction_errors(bad_dgs, tgt_dir):
    if not os.path.exists(tgt_dir):
        os.makedirs(tgt_dir)

    num_items = len(bad_dgs)
    logger.info('Drawing %d graphs with errors in --> %s', len(bad_dgs),
                tgt_dir)

    bar = create_progress_bar()
    # for idx in bar(range(num_items // 100)):
    for idx in bar(range(num_items)):
        dg = bad_dgs[idx]
        error_data = dg.graph['errors']
        if not error_data is None:
            for child, head, target in error_data[:2]:
                nx.set_node_attributes(dg, values={child: 'red'}, name='color')
                nx.set_node_attributes(dg, values={head: 'blue'}, name='color')
                # nx.set_node_attributes(dg, values={head: 'setlinewidth(3)'}, name='style')
                # if 'lo' in dg.node[child]:
                #     nx.set_node_attributes(dg, values={dg.node[child]['lo']: 'green'}, name='color')
                #
                # if 'ro' in dg.node[child]:
                #     nx.set_node_attributes(dg, values={dg.node[child]['ro']: 'green'}, name='color')

            png_fname = os.path.join(tgt_dir, '%d.png' % idx)
            gold_snt = dg.graph['snt']
            pred_snt = ' '.join(
                [dg.node[n]['GOLD_FORM'] for n in dg.graph['node_order']])
            draw_graph(dg,
                       label='%s\n%s' % (gold_snt, pred_snt),
                       layout='dot',
                       fname=png_fname,
                       rename_nodes=True)

    logger.info('Done')
コード例 #3
0
ファイル: __init__.py プロジェクト: sIncerass/prag_generation
    def compute_val_loss(self, model, dev_batches):

        total_loss = 0
        running_losses = []
        num_dev_batches = len(dev_batches)
        bar = create_progress_bar('dev_loss')

        for batch_idx in bar(range(num_dev_batches)):
            loss_var = self.train_step(model, dev_batches[batch_idx])
            loss_data = loss_var.data[0]

            # Record loss
            running_losses = ([loss_data] + running_losses)[:20]
            bar.dynamic_messages['dev_loss'] = np.mean(running_losses)

            total_loss += loss_data

        total_loss_avg = total_loss / num_dev_batches
        return total_loss_avg