Skip to main content

Record experiment data easily

Project description

record-keeper

Installation

pip install record-keeper

The Problem:

When running machine-learning experiments, having more logged data is usually better than less. But adding new series of data to log can often require changes to your training code. When you want to log dozens of different series of data, your code starts to look awful.

The Solution:

Use RecordKeeper, and easily add loggable information when you write a new class. The example below is taken from the pytorch-metric-learning library.

First, create a list that contains the names of the attributes you want to record (self.record_these in the example below).

class ContrastiveLoss(GenericPairLoss):
    def __init__(self, pos_margin=0, neg_margin=1, use_similarity=False, power=1, avg_non_zero_only=True, **kwargs):
        ...
        self.num_non_zero_pos_pairs = 0
        self.num_non_zero_neg_pairs = 0
        self.record_these = ["num_non_zero_pos_pairs", "num_non_zero_neg_pairs"]
        ...
    ...

Then tell RecordKeeper the name of the list to read. RecordKeeper will log and save all the attributes described in the list.

from torch.utils.tensorboard import SummaryWriter
import record_keeper as record_keeper_package
from pytorch_metric_learning import losses

record_writer = record_keeper_package.RecordWriter(your_folder_for_logs)
tensorboard_writer = SummaryWriter(log_dir=your_tensorboard_folder)
record_keeper = record_keeper_package.RecordKeeper(tensorboard_writer, record_writer, ["record_these"])

your_loss_dictionary = {"metric_loss": losses.ContrastiveLoss()}

# Then at each iteration of training:
record_keeper.update_records(your_loss_dictionary, current_iteration)

Now the attributes described in record_these, (specifically, num_non_zero_pos_pairs and num_non_zero_neg_pairs) can be viewed on Tensorboard.

nonzero_pairs_example

These data series are also saved in sqlite and CSV format. If you only want to use Tensorboard, then pass in only a SummaryWriter, and vice versa.

The dictionary that you pass into record_keeper.update_records can contain any number of objects, and for each one, RecordKeeper will check if the object has a "record_these" attribute. As long as you're making your dictionaries programmatically, it's possible to add large amounts of loggable data without clogging up your training code. See pytorch-metric-learning and powerful-benchmarker to see RecordKeeper in action.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

record-keeper-0.9.26.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

record_keeper-0.9.26-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file record-keeper-0.9.26.tar.gz.

File metadata

  • Download URL: record-keeper-0.9.26.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0.post20191030 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

File hashes

Hashes for record-keeper-0.9.26.tar.gz
Algorithm Hash digest
SHA256 29951e85b8b82239b2cb2102cd97919013861ea9c21eda53d2c41f091a2c655e
MD5 db73f5ba4e18509815d88d7de4aa3cbc
BLAKE2b-256 8a89cf8e2034b15fadf0e3c8def03348a732e630ec99a40c914a072b905efd00

See more details on using hashes here.

File details

Details for the file record_keeper-0.9.26-py3-none-any.whl.

File metadata

  • Download URL: record_keeper-0.9.26-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0.post20191030 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

File hashes

Hashes for record_keeper-0.9.26-py3-none-any.whl
Algorithm Hash digest
SHA256 78c411799fdb463fa11688235140befbb7ae88be5399fa793a6ba6b097670d61
MD5 0c51b5130db80f8dc2cbb4c8f8dd62f2
BLAKE2b-256 8d560e646aad413c5b41937104dc07ec28212dd6200510df4911ad4a03936902

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page