Beispiel #1
0
    def test_dispatches_to_group_handler(self, mocker):
        logger = TrainingLogger()
        handler_mock = mocker.Mock()
        logger.register_handler('handler', handler_mock)

        logger.register_value_group(r'good_group/.*', ['handler'])

        logger.log_value('good_group/value', 1)
        assert handler_mock.write.call_count == 1

        with pytest.raises(Exception):
            logger.log_value('bad_group/value', 1)
Beispiel #2
0
def setup_logging(args):
    logger = TrainingLogger()

    # Create handlers
    logger.register_handler("val_batch", StreamHandler(prefix='Val: ', scope='batch'))
    logger.register_handler("val_epoch", StreamHandler(fmt="* {epoch} epochs done:  {values}", scope='epoch',
                                                       display_instant=False))

    logger.register_handler("test_std", StreamHandler(fmt="Testing: [{step}/{total}]\t{values}",
                                                      scope='batch'))
    logger.register_handler("test_end", StreamHandler(fmt="* Testing results: {values}", scope='epoch',
                                                      display_instant=False))
    logger.register_handler("train_epoch", StreamHandler(fmt="* Train epoch {epoch} done:  {values}", scope='epoch'))
    logger.register_handler("train_batch", StreamHandler(prefix='Train: ', scope='batch'))

    logger.register_handler("tb", TensorboardHandler(scope='epoch', summary_writer=args.writer))
    logger.register_handler("tb_global", TensorboardHandler(scope='global', summary_writer=args.writer))

    logger.register_handler("val_csv", CSVHandler(scope='epoch', csv_path=(args.result_path / 'val.csv'),
                                                  index_col='epoch'))
    logger.register_handler("train_csv", CSVHandler(scope='epoch', csv_path=(args.result_path / 'train.csv'),
                                                    index_col='epoch'))

    # Create logged values
    logger.register_value("train/acc", ['train_batch', 'tb_global'], average=True, display_name='clip')
    logger.register_value("train/loss", ['train_batch', 'tb_global'], average=True, display_name='loss')
    logger.register_value("train/kd_loss", ['train_batch', 'tb_global'], average=True, display_name='loss')
    logger.register_value("train/epoch_acc", ['train_epoch', 'tb', 'train_csv'], display_name='clip')
    logger.register_value("train/epoch_loss", ['train_epoch', 'tb', 'train_csv'], display_name='loss')
    logger.register_value_group("lr/.*", ['tb'])

    logger.register_value("time/train_data", ['train_batch'], average=True, display_name='data time')
    logger.register_value("time/train_step", ['train_batch'], average=True, display_name='time')
    logger.register_value("time/train_epoch", ['train_epoch'], display_name='Train epoch time')

    logger.register_value("val/acc", ['val_batch', 'val_epoch', 'tb', 'val_csv'], average=True, display_name='clip')
    logger.register_value("val/video", ['val_batch', 'val_epoch', 'tb', 'val_csv'], average=False, display_name='video')
    logger.register_value("val/loss", ['val_batch', 'tb', 'val_csv'], average=True, display_name='loss')
    logger.register_value("val/generalization_error", ['val_epoch', 'tb', 'val_csv'],
                          display_name='Train Val accuracy gap')

    logger.register_value("time/val_data", ['val_batch'], average=True, display_name='data time')
    logger.register_value("time/val_step", ['val_batch'], average=True, display_name='time')
    logger.register_value("time/val_epoch", ['val_epoch'], average=False, display_name='Validation time')

    logger.register_value("test/acc", ['test_std', 'test_end', 'tb'], average=True, display_name='clip')
    logger.register_value("test/video", ['test_std', 'test_end', 'tb'], average=False, display_name='video')

    return logger