Demo of BaseLearnerΒΆ

This is the original code.

This is the version based on argsloader.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from pprint import pprint

from argsloader.units import cdict, cvalue, number, yesno, non_negative, regexp, positive

config_loader = cdict(dict(
    train_iterations=cvalue(int(1e9), number() >> positive.int()),
    dataloader=dict(num_workers=cvalue(0, number() >> non_negative.int()), ),
    log_policy=cvalue(True, yesno()),
    # --- Hooks ---
    hook=dict(
        load_ckpt_before_run=cvalue('', regexp('^$|.*\.pth\.tar$').match.check),
        log_show_after_iter=cvalue(100, number() >> positive.int()),
        save_ckpt_after_iter=cvalue(10000, number() >> positive.int()),
        save_ckpt_after_run=cvalue(True, yesno()),
    ),
))

if __name__ == '__main__':
    pprint(config_loader.call({
        'train_iterations': int(1e10),
        'dataloader': {
            'num_workers': 1,
        },
        'hook': {
            'load_ckpt_before_run': './expert/ckpt/ckpt_best.pth.tar',
            'log_show_after_iter': 1000,
        },
    }), indent=4)

The result should be

1
2
3
4
5
6
7
{   'dataloader': {'num_workers': 1},
    'hook': {   'load_ckpt_before_run': './expert/ckpt/ckpt_best.pth.tar',
                'log_show_after_iter': 1000,
                'save_ckpt_after_iter': 10000,
                'save_ckpt_after_run': True},
    'log_policy': True,
    'train_iterations': 10000000000}