Metadata-Version: 2.1
Name: record-keeper
Version: 0.9.1
Summary: Record experiment data easily
Home-page: https://github.com/TakeshiMusgrave/record_keeper
Author: Kevin Musgrave
Author-email: tkm45@cornell.edu
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: numpy
Requires-Dist: matplotlib

# record_keeper

## Installation
```
pip install record_keeper
```

Easily add loggable information when you write a new function. First, create a list that contains the names of the attributes you want to record ("self.record_these" in the example below).
```
class YourNewLossFunction:
  def __init__(self, **kwargs):
    self.avg_embedding_norm = 0
    self.some_other_useful_stat = 0
    self.record_these = ["avg_embedding_norm", "some_other_useful_stat"]
    super().__init__(**kwargs)

  def compute_loss(self, embeddings, labels):
    self.avg_embedding_norm = torch.mean(torch.norm(embeddings, p=2, dim=1))
    self.some_other_useful_stat = some_cool_function(embeddings)
```

Then tell RecordKeeper the name of the list to read. RecordKeeper will then log and save all the attributes described in the list.
```
from torch.utils.tensorboard import SummaryWriter
import record_keeper as record_keeper_package

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

# Then during training:
record_keeper.update_records(your_dict_of_objects, current_iteration)

```




