A simple record toolkit generating human readable data record for experiment
Project description
record-kit
A simple record toolkit generating human-readable data record in experiments.
Installation
pip install record-kit
Usage
Suppose you have an experiment script like this:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--lr', type=float)
args = parser.parse_args()
def train_ml_model():
for i in range(2):
epoch, loss, acc = i, 0.1, 0.5
Using record-kit to track these generated data is quite easy:
from record_kit import Recorder, Record # use Recorder to track experiment data
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--lr', type=float, default=0.1)
args = parser.parse_args()
def train_ml_model():
for i in range(2):
epoch, loss, acc = i, 0.1, 0.5
recorder.add_data(epoch, loss, acc) # save data
# init Recorder
recorder = Recorder() # init Recorder
recorder.set_meta(args) # save arguments like hyperparameters
recorder.set_header('epoch', 'loss', 'acc') # specify table header
# parse record
record = Record(recorder) # or record = Record('path/to/record')
print(record.meta)
print(record.data)
output
{'lr': 0.1}
epoch loss acc
0 0.0 0.10 0.5
1 1.0 0.08 0.9
generated record in ./records/record-timestamp.md
Record Format
A typical record includes two sections Meta
and Data
.
# record-20201020-154912
## Meta
| key | value | type |
| :---: | :---: | :---: |
| lr | 0.1 | float |
## Data
| epoch | loss | acc |
| :---: | :---: | :---: |
| 0 | 0.1 | 0.5 |
| 1 | 0.08 | 0.9 |
API
Recorder
Recorder(file_name='record', records_dir='./records', with_timestamp=True)
Initialize a Recorder instance
Recorder.set_meta(dict_like_object)
Add meta info to the record. Note meta info can only be added once.
You may use dict
or argparse.Namespace
(return type of parser.parse_args()
) as its parameter.
Recorder.set_header(*args)
Specify header of data table in Data section. The header can only be added once.
Recorder.add(*args)
Add a data line to the table in Data
section.
The number of parameters in should be consistent with Recorder.set_header(*args)
Record
Record(Recorder_or_path_str)
Load & parse record
Record.meta -> dict
Get meta info of record.
Record.data -> pandas.DataFrame
Get data table of record.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for record_kit-0.1.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f6b854239ed4b64ce53fbc9b3f2608cd45ba066b1b701791386fc4e1e49c455 |
|
MD5 | 5d6e50c8c6cb018613062a1dd765fc91 |
|
BLAKE2b-256 | 7851b1b23f7d59ce895f0218393ec98def5b297d3004512d2d4cb9d338075464 |