nntool 1.3.0__cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of nntool might be problematic. Click here for more details.
- nntool/__init__.py +2 -0
- nntool/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/experiment/__init__.py +6 -0
- nntool/experiment/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/experiment/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/experiment/__pycache__/config.cpython-310.opt-1.pyc +0 -0
- nntool/experiment/__pycache__/config.cpython-310.pyc +0 -0
- nntool/experiment/__pycache__/utils.cpython-310.opt-1.pyc +0 -0
- nntool/experiment/__pycache__/utils.cpython-310.pyc +0 -0
- nntool/experiment/config.py +112 -0
- nntool/experiment/utils.py +63 -0
- nntool/parser/__init__.py +1 -0
- nntool/parser/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/parser/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/parser/__pycache__/parse.cpython-310.opt-1.pyc +0 -0
- nntool/parser/__pycache__/parse.cpython-310.pyc +0 -0
- nntool/parser/parse.py +22 -0
- nntool/plot/__init__.py +6 -0
- nntool/plot/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/plot/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/plot/__pycache__/context.cpython-310.opt-1.pyc +0 -0
- nntool/plot/__pycache__/context.cpython-310.pyc +0 -0
- nntool/plot/context.py +48 -0
- nntool/plot/csrc/__compile__.cpython-310-x86_64-linux-gnu.so +0 -0
- nntool/plot/csrc/__init__.py +3 -0
- nntool/plot/csrc/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/plot/csrc/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/slurm/__init__.py +9 -0
- nntool/slurm/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/slurm/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/slurm/__pycache__/config.cpython-310.opt-1.pyc +0 -0
- nntool/slurm/__pycache__/config.cpython-310.pyc +0 -0
- nntool/slurm/__pycache__/function.cpython-310.opt-1.pyc +0 -0
- nntool/slurm/__pycache__/function.cpython-310.pyc +0 -0
- nntool/slurm/__pycache__/task.cpython-310.opt-1.pyc +0 -0
- nntool/slurm/__pycache__/task.cpython-310.pyc +0 -0
- nntool/slurm/__pycache__/wrap.cpython-310.opt-1.pyc +0 -0
- nntool/slurm/__pycache__/wrap.cpython-310.pyc +0 -0
- nntool/slurm/accelerator/__init__.py +0 -0
- nntool/slurm/accelerator/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/slurm/accelerator/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/slurm/accelerator/__pycache__/utils.cpython-310.opt-1.pyc +0 -0
- nntool/slurm/accelerator/__pycache__/utils.cpython-310.pyc +0 -0
- nntool/slurm/accelerator/utils.py +39 -0
- nntool/slurm/config.py +182 -0
- nntool/slurm/csrc/__compile__.cpython-310-x86_64-linux-gnu.so +0 -0
- nntool/slurm/csrc/__init__.py +5 -0
- nntool/slurm/csrc/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/slurm/csrc/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/slurm/function.py +173 -0
- nntool/slurm/task.py +231 -0
- nntool/slurm/wrap.py +210 -0
- nntool/train/__init__.py +25 -0
- nntool/train/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/train/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/train/__pycache__/trainer.cpython-310.opt-1.pyc +0 -0
- nntool/train/__pycache__/trainer.cpython-310.pyc +0 -0
- nntool/train/trainer.py +92 -0
- nntool/utils/__init__.py +6 -0
- nntool/utils/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/utils/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/wandb/__init__.py +1 -0
- nntool/wandb/__pycache__/__init__.cpython-310.opt-1.pyc +0 -0
- nntool/wandb/__pycache__/__init__.cpython-310.pyc +0 -0
- nntool/wandb/__pycache__/config.cpython-310.opt-1.pyc +0 -0
- nntool/wandb/__pycache__/config.cpython-310.pyc +0 -0
- nntool/wandb/config.py +118 -0
- nntool-1.3.0.dist-info/._SOURCES.txt +0 -0
- nntool-1.3.0.dist-info/._dependency_links.txt +0 -0
- nntool-1.3.0.dist-info/._requires.txt +0 -0
- nntool-1.3.0.dist-info/._top_level.txt +0 -0
- nntool-1.3.0.dist-info/METADATA +25 -0
- nntool-1.3.0.dist-info/RECORD +76 -0
- nntool-1.3.0.dist-info/WHEEL +6 -0
- nntool-1.3.0.dist-info/top_level.txt +1 -0
nntool/train/trainer.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import wandb
|
|
2
|
+
import torch
|
|
3
|
+
|
|
4
|
+
from typing import Dict, Set
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from abc import abstractmethod
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class BaseTrainer(object):
|
|
10
|
+
def __init__(self, output_folder: str, has_wandb_writer: bool = False) -> None:
|
|
11
|
+
self.output_folder = Path(output_folder)
|
|
12
|
+
self.output_folder.mkdir(exist_ok=True)
|
|
13
|
+
|
|
14
|
+
self.has_writer = has_wandb_writer
|
|
15
|
+
self._wandb_defined_metrics: Set[str] = set()
|
|
16
|
+
if self.has_writer:
|
|
17
|
+
self._init_wandb_metric()
|
|
18
|
+
|
|
19
|
+
def _get_wandb_step_name(self, wandb_section: str = "trainer_state") -> str:
|
|
20
|
+
return f"{wandb_section}/{self.__class__.__name__}_step"
|
|
21
|
+
|
|
22
|
+
def _init_wandb_metric(self):
|
|
23
|
+
wandb.define_metric(self._get_wandb_step_name())
|
|
24
|
+
self._wandb_defined_metrics.add(self._get_wandb_step_name())
|
|
25
|
+
|
|
26
|
+
def log(self, log_dict: dict, step: int = None, section: str = "train"):
|
|
27
|
+
if not self.has_writer:
|
|
28
|
+
return
|
|
29
|
+
|
|
30
|
+
# add section to each metric
|
|
31
|
+
log_dict = {f"{section}/{k}": v for k, v in log_dict.items()}
|
|
32
|
+
|
|
33
|
+
# define metrics against custom step name
|
|
34
|
+
for k in log_dict.keys():
|
|
35
|
+
if k not in self._wandb_defined_metrics:
|
|
36
|
+
wandb.define_metric(k, step_metric=self._get_wandb_step_name())
|
|
37
|
+
self._wandb_defined_metrics.add(k)
|
|
38
|
+
|
|
39
|
+
# add step metrics
|
|
40
|
+
if step is not None:
|
|
41
|
+
log_dict.update({self._get_wandb_step_name(): step})
|
|
42
|
+
else:
|
|
43
|
+
log_dict.update({self._get_wandb_step_name(): self.global_step})
|
|
44
|
+
|
|
45
|
+
wandb.log(log_dict)
|
|
46
|
+
|
|
47
|
+
def save(self, milestone: str):
|
|
48
|
+
state = self.get_state()
|
|
49
|
+
torch.save(state, str(self.output_folder / f"model-{milestone}.pt"))
|
|
50
|
+
|
|
51
|
+
def load(self, milestone: str):
|
|
52
|
+
state = torch.load(
|
|
53
|
+
str(self.output_folder / f"model-{milestone}.pt"),
|
|
54
|
+
map_location=self.device,
|
|
55
|
+
)
|
|
56
|
+
self.load_state(state)
|
|
57
|
+
|
|
58
|
+
@abstractmethod
|
|
59
|
+
def train(self):
|
|
60
|
+
raise NotImplementedError
|
|
61
|
+
|
|
62
|
+
@abstractmethod
|
|
63
|
+
def set_model_state(self, train: bool = True):
|
|
64
|
+
raise NotImplementedError
|
|
65
|
+
|
|
66
|
+
@torch.inference_mode()
|
|
67
|
+
@abstractmethod
|
|
68
|
+
def eval(self, dataloader: torch.utils.data.DataLoader) -> Dict[str, object]:
|
|
69
|
+
raise NotImplementedError
|
|
70
|
+
|
|
71
|
+
@torch.inference_mode()
|
|
72
|
+
@abstractmethod
|
|
73
|
+
def eval_during_training(self) -> Dict[str, object]:
|
|
74
|
+
raise NotImplementedError
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
@abstractmethod
|
|
78
|
+
def device(self) -> torch.DeviceObjType:
|
|
79
|
+
raise NotImplementedError
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
@abstractmethod
|
|
83
|
+
def global_step(self) -> int:
|
|
84
|
+
raise NotImplementedError
|
|
85
|
+
|
|
86
|
+
@abstractmethod
|
|
87
|
+
def get_state(self) -> Dict[str, object]:
|
|
88
|
+
raise NotImplementedError
|
|
89
|
+
|
|
90
|
+
@abstractmethod
|
|
91
|
+
def load_state(self, state: Dict[str, object]):
|
|
92
|
+
raise NotImplementedError
|
nntool/utils/__init__.py
ADDED
|
Binary file
|
|
Binary file
|
nntool/wandb/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .config import WandbConfig, init_wandb
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
nntool/wandb/config.py
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import git
|
|
3
|
+
import wandb
|
|
4
|
+
import tomli
|
|
5
|
+
import warnings
|
|
6
|
+
|
|
7
|
+
from dataclasses import dataclass, field
|
|
8
|
+
|
|
9
|
+
from wandb.sdk.lib.disabled import RunDisabled
|
|
10
|
+
from wandb.sdk.wandb_run import Run
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclass
|
|
14
|
+
class WandbConfig:
|
|
15
|
+
"""
|
|
16
|
+
Configuration class for Weights and Biases (wandb) integration.
|
|
17
|
+
|
|
18
|
+
:param api_key_config_file: The file path to the configuration file containing the wandb API key.
|
|
19
|
+
The file should be a toml file with a `[wandb]` section. Default is an empty string.
|
|
20
|
+
|
|
21
|
+
:param project: The name of the project in wandb. Default is an empty string.
|
|
22
|
+
|
|
23
|
+
:param entity: The wandb user or team name. Default is an empty string.
|
|
24
|
+
|
|
25
|
+
:param name: The name of the wandb run. Leave blank to use the default run name. Default is an empty string.
|
|
26
|
+
|
|
27
|
+
:param notes: Notes or comments for the wandb run. Default is an empty string.
|
|
28
|
+
|
|
29
|
+
:param log_git_hash: Whether to log the current Git hash. Default is True.
|
|
30
|
+
|
|
31
|
+
:param log_code: Whether to log the current codebase. Default is True.
|
|
32
|
+
|
|
33
|
+
:param code_root: The root directory of the codebase to be logged. Default is the current directory (`.`).
|
|
34
|
+
|
|
35
|
+
:param code_ext: A list of file extensions for the code files to be logged. Default includes `.py` and `.sh`.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
# wandb api key (toml file with [wandb] key field)
|
|
39
|
+
api_key_config_file: str = ""
|
|
40
|
+
|
|
41
|
+
# project name in wandb
|
|
42
|
+
project: str = ""
|
|
43
|
+
|
|
44
|
+
# wandb user name
|
|
45
|
+
entity: str = ""
|
|
46
|
+
|
|
47
|
+
# wandb run name (leave blacnk to use default name)
|
|
48
|
+
name: str = ""
|
|
49
|
+
|
|
50
|
+
# wandb run notes
|
|
51
|
+
notes: str = ""
|
|
52
|
+
|
|
53
|
+
# log git hash
|
|
54
|
+
log_git_hash: bool = True
|
|
55
|
+
|
|
56
|
+
# log code
|
|
57
|
+
log_code: bool = True
|
|
58
|
+
|
|
59
|
+
# code root
|
|
60
|
+
code_root: str = "."
|
|
61
|
+
|
|
62
|
+
# code file extensions
|
|
63
|
+
code_ext: list[str] = field(default_factory=lambda: [".py", ".sh"])
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def is_wandb_enabled():
|
|
67
|
+
return wandb.run is not None
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def init_wandb(args: WandbConfig, run_config: dict) -> Run | RunDisabled | None:
|
|
71
|
+
"""initialize wandb and log the configuration
|
|
72
|
+
|
|
73
|
+
:param args: WandbConfig object
|
|
74
|
+
:param run_config: configuration dictionary to be logged
|
|
75
|
+
:return: wandb run object
|
|
76
|
+
"""
|
|
77
|
+
project, entity = args.project, args.entity
|
|
78
|
+
if "WANDB_API_KEY" in os.environ:
|
|
79
|
+
warnings.warn("WANDB_API_KEY is found in environment variables. Using it.")
|
|
80
|
+
wandb.login(key=os.environ["WANDB_API_KEY"])
|
|
81
|
+
elif args.api_key_config_file:
|
|
82
|
+
with open(args.api_key_config_file, "rb") as config_file:
|
|
83
|
+
config_data = tomli.load(config_file)
|
|
84
|
+
wandb.login(key=config_data["wandb"]["key"])
|
|
85
|
+
project = config_data["wandb"].get("project", args.project)
|
|
86
|
+
entity = config_data["wandb"].get("entity", args.entity)
|
|
87
|
+
else:
|
|
88
|
+
warnings.warn(
|
|
89
|
+
"WANDB_API_KEY is not found in environment variables or the local key file."
|
|
90
|
+
)
|
|
91
|
+
pass
|
|
92
|
+
|
|
93
|
+
if args.log_git_hash:
|
|
94
|
+
repo = git.Repo(search_parent_directories=True)
|
|
95
|
+
git_hash = repo.head.object.hexsha
|
|
96
|
+
args.notes = (
|
|
97
|
+
f"{args.notes + ', ' if args.notes else ''}" + f"git hash: {git_hash}"
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
wandb_run = wandb.init(
|
|
101
|
+
project=project,
|
|
102
|
+
entity=entity,
|
|
103
|
+
name=args.name if args.name else None,
|
|
104
|
+
notes=args.notes,
|
|
105
|
+
config=run_config,
|
|
106
|
+
)
|
|
107
|
+
if not is_wandb_enabled():
|
|
108
|
+
warnings.warn(
|
|
109
|
+
"wandb is not enabled after intialization. Please check `wandb enabled`."
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
wandb_run.log_code(
|
|
113
|
+
root=args.code_root,
|
|
114
|
+
include_fn=lambda path, root: any(
|
|
115
|
+
[path.endswith(ext) for ext in args.code_ext]
|
|
116
|
+
),
|
|
117
|
+
)
|
|
118
|
+
return wandb_run
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: nntool
|
|
3
|
+
Version: 1.3.0
|
|
4
|
+
Summary: neural network tool for research
|
|
5
|
+
Home-page: https://github.com/jhliu17/nntool
|
|
6
|
+
Author: Junhao Liu
|
|
7
|
+
Author-email: junhaoliu17@gmail.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Keywords: deep learning,neural network,research
|
|
10
|
+
Requires-Python: >=3.9
|
|
11
|
+
Requires-Dist: setuptools >=68.0.0
|
|
12
|
+
Requires-Dist: submitit >=1.5.2
|
|
13
|
+
Requires-Dist: tyro >=0.8.12
|
|
14
|
+
Requires-Dist: matplotlib >=3.8.0
|
|
15
|
+
Requires-Dist: seaborn >=0.13.2
|
|
16
|
+
Requires-Dist: wandb >=0.15.0
|
|
17
|
+
Requires-Dist: tomli >=2.0.1
|
|
18
|
+
Requires-Dist: cythonpackage
|
|
19
|
+
Provides-Extra: dev
|
|
20
|
+
Requires-Dist: pytest >=8.0.2 ; extra == 'dev'
|
|
21
|
+
Requires-Dist: jax[cpu] >=0.4.0 ; extra == 'dev'
|
|
22
|
+
Requires-Dist: torch >=2.2.0 ; extra == 'dev'
|
|
23
|
+
Requires-Dist: mypy ; extra == 'dev'
|
|
24
|
+
Requires-Dist: accelerate ; extra == 'dev'
|
|
25
|
+
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
nntool/__init__.py,sha256=aLOwJwXql9j87YPh8ACPWuGMD4Z_R8JlJVh2P5ZdohY,75
|
|
2
|
+
nntool/slurm/config.py,sha256=UFleYQuXLxz5F4Hx5WuN832UnA0uTQ05M_YyTvsnFOs,6860
|
|
3
|
+
nntool/slurm/function.py,sha256=aSbAgNvYPZaWJoxgjHomVaIZMSRrRzV5XIz1w6Hnrqs,8163
|
|
4
|
+
nntool/slurm/wrap.py,sha256=dN2lzRfE32WRaqj4ohUp9K4n8EKkk657zOer6FbRGPU,9044
|
|
5
|
+
nntool/slurm/__init__.py,sha256=MHg76NOj0qEzr_sXiL0nTarVm6xIXymtbmVc0U9E4_o,228
|
|
6
|
+
nntool/slurm/task.py,sha256=djxm5Ggi2EvPhijDNPCvx-Ppk5_BKQpTy1BAKPZhVHI,7580
|
|
7
|
+
nntool/slurm/accelerator/utils.py,sha256=oZrpcvlHYH14j-uNVEiSye6KiuULG1E34zGLw_IczHc,1298
|
|
8
|
+
nntool/slurm/accelerator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
nntool/slurm/accelerator/__pycache__/utils.cpython-310.pyc,sha256=o-bxDxmitSWbG6o0KuLgTRXZLe3AHVPRoGzq1Ev-iTU,1435
|
|
10
|
+
nntool/slurm/accelerator/__pycache__/utils.cpython-310.opt-1.pyc,sha256=o-bxDxmitSWbG6o0KuLgTRXZLe3AHVPRoGzq1Ev-iTU,1435
|
|
11
|
+
nntool/slurm/accelerator/__pycache__/__init__.cpython-310.pyc,sha256=qmfQ9skriIu7ee28WpFjf5n6BjOLu0XSvZT-fiRe3VU,129
|
|
12
|
+
nntool/slurm/accelerator/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=qmfQ9skriIu7ee28WpFjf5n6BjOLu0XSvZT-fiRe3VU,129
|
|
13
|
+
nntool/slurm/csrc/__init__.py,sha256=ew8vy7OKCavl2vOb0ZCDKunHjNGYsfgqZvse7UyhjkE,104
|
|
14
|
+
nntool/slurm/csrc/__compile__.cpython-310-x86_64-linux-gnu.so,sha256=oDiT0iKdYo6SnwClCh55g6H8G1NE-77C9Xmfn6ZiURA,1813928
|
|
15
|
+
nntool/slurm/csrc/__pycache__/__init__.cpython-310.pyc,sha256=eT1nHcuPo6fWx7d_BY-pSr46zN-sR4hr0Q6uS7FoBIY,240
|
|
16
|
+
nntool/slurm/csrc/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=pE9vEMhMyI_hM8OSnP6nRgJUqHCFsfO5aiX6Fxofft8,240
|
|
17
|
+
nntool/slurm/__pycache__/function.cpython-310.pyc,sha256=CQ7NiikaZGjLS-670_yOobPLZjluUwo4_iFopouGV4U,7972
|
|
18
|
+
nntool/slurm/__pycache__/task.cpython-310.opt-1.pyc,sha256=a_zpjcS1-LNYbzvQmkUmknWNuC7FfsdrrYVyL116mxE,7634
|
|
19
|
+
nntool/slurm/__pycache__/wrap.cpython-310.pyc,sha256=1O8zgL9Qrs7EyV6d1XjNWAu4XQqLQNO3NC499q2aCuw,8466
|
|
20
|
+
nntool/slurm/__pycache__/config.cpython-310.opt-1.pyc,sha256=dJEeXTN48zdGN2-A1OMqDRgZCrd-e0FJ5NyQJ9UzBIs,5702
|
|
21
|
+
nntool/slurm/__pycache__/task.cpython-310.pyc,sha256=dllCJK41Fw6ZsyvkVvG-FSemodTU9650FRxTVzrzNCk,7634
|
|
22
|
+
nntool/slurm/__pycache__/wrap.cpython-310.opt-1.pyc,sha256=1O8zgL9Qrs7EyV6d1XjNWAu4XQqLQNO3NC499q2aCuw,8466
|
|
23
|
+
nntool/slurm/__pycache__/function.cpython-310.opt-1.pyc,sha256=CQ7NiikaZGjLS-670_yOobPLZjluUwo4_iFopouGV4U,7972
|
|
24
|
+
nntool/slurm/__pycache__/__init__.cpython-310.pyc,sha256=ftpFxoxqT4fcl9cyh7JFHRBBHm4YJ_RS95qJTBsfU7Y,400
|
|
25
|
+
nntool/slurm/__pycache__/config.cpython-310.pyc,sha256=SeLnj_y4WyVJRO5UQ1KrzfLmC-xWt2UzIeW1d9GLWK4,5702
|
|
26
|
+
nntool/slurm/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=ftpFxoxqT4fcl9cyh7JFHRBBHm4YJ_RS95qJTBsfU7Y,400
|
|
27
|
+
nntool/train/trainer.py,sha256=f_cFFTdddT1EDX-7DN1_y-jQ3WWxO3ZoHXSF3rgBKqY,2808
|
|
28
|
+
nntool/train/__init__.py,sha256=LRc7-qwMItUFM4FvB0fipqIRJfE_UV0SDBmGBUnMTGQ,827
|
|
29
|
+
nntool/train/__pycache__/trainer.cpython-310.pyc,sha256=IZqX7G_cREw3vcoyoUx5LL9tW8Cdg-UCbmq0FO38hYw,3558
|
|
30
|
+
nntool/train/__pycache__/trainer.cpython-310.opt-1.pyc,sha256=IZqX7G_cREw3vcoyoUx5LL9tW8Cdg-UCbmq0FO38hYw,3558
|
|
31
|
+
nntool/train/__pycache__/__init__.cpython-310.pyc,sha256=K4kARzeBWVh2C_A8KLxNSZyE_bLzpd3NsS4wyCyaglU,582
|
|
32
|
+
nntool/train/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=K4kARzeBWVh2C_A8KLxNSZyE_bLzpd3NsS4wyCyaglU,582
|
|
33
|
+
nntool/utils/__init__.py,sha256=wo1H6JzA6F9VndjieS1UypPf78m2_9Io3eNqc336oxA,135
|
|
34
|
+
nntool/utils/__pycache__/__init__.cpython-310.pyc,sha256=rjTPcYHdduVBookQAd7iDJUA7d7217sSx-yZD6WjtdI,225
|
|
35
|
+
nntool/utils/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=rjTPcYHdduVBookQAd7iDJUA7d7217sSx-yZD6WjtdI,225
|
|
36
|
+
nntool/experiment/utils.py,sha256=ajrjYNltyNwNfmFciygCvbcRBtn8Gc7-dVR07Q8xbKo,2119
|
|
37
|
+
nntool/experiment/config.py,sha256=3PQx2B9bTVxdj0i2BQ_shHSzDdFn6nNfjUAfuVjVJoo,3861
|
|
38
|
+
nntool/experiment/__init__.py,sha256=vd7SV9-29tceUk0QiWSgxYJIJws0M2lSSd2pu5KSKwE,127
|
|
39
|
+
nntool/experiment/__pycache__/utils.cpython-310.pyc,sha256=B9zRohwMx_kyVq4i3ijfi20GBoPENmF2ipnajE2TY8I,1932
|
|
40
|
+
nntool/experiment/__pycache__/config.cpython-310.opt-1.pyc,sha256=iS1ZQmJitzdE4Mf83j1pfmH3vtrGUnfFzeD5B4TuksU,4088
|
|
41
|
+
nntool/experiment/__pycache__/utils.cpython-310.opt-1.pyc,sha256=B9zRohwMx_kyVq4i3ijfi20GBoPENmF2ipnajE2TY8I,1932
|
|
42
|
+
nntool/experiment/__pycache__/__init__.cpython-310.pyc,sha256=VeRcGKZKmw3v7_BaWCLZ_idqmV00lYsmibu1gzEUAr4,270
|
|
43
|
+
nntool/experiment/__pycache__/config.cpython-310.pyc,sha256=iS1ZQmJitzdE4Mf83j1pfmH3vtrGUnfFzeD5B4TuksU,4088
|
|
44
|
+
nntool/experiment/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=VeRcGKZKmw3v7_BaWCLZ_idqmV00lYsmibu1gzEUAr4,270
|
|
45
|
+
nntool/plot/__init__.py,sha256=M0qnyO48RzI_62v1EzhXNIszLZEJ7tsTS2YuzDoOoKE,133
|
|
46
|
+
nntool/plot/context.py,sha256=9aEFWZSwliKCX5n2GX1uWPPJR_7dbn8XSVNefipkGB8,1331
|
|
47
|
+
nntool/plot/csrc/__init__.py,sha256=fkzL5CkVtu6JFZ8xxMdLYjRt86bqWiHYfh3UI4iMi8s,51
|
|
48
|
+
nntool/plot/csrc/__compile__.cpython-310-x86_64-linux-gnu.so,sha256=2GRlCicARxA4V-iuOdXuGu0deqT27CJXjk3y4xm0ErA,738224
|
|
49
|
+
nntool/plot/csrc/__pycache__/__init__.cpython-310.pyc,sha256=9vJKTmP_6UeL9MkVQ4ZUlupDBosXvLlmuDaJHrrW9x8,174
|
|
50
|
+
nntool/plot/csrc/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=iXVFNvhZVFai5AK9LShFIUDSYiPEKn0Umq15x1CpHMQ,174
|
|
51
|
+
nntool/plot/__pycache__/context.cpython-310.opt-1.pyc,sha256=J_kOkmIV_GQPBuJ_hWQ7YYgGhuFjQpnvWbPRjJzEpD0,1750
|
|
52
|
+
nntool/plot/__pycache__/__init__.cpython-310.pyc,sha256=GbhpEuu-hHu2B0A3A6dOwoev-mNveC01qEhJjXWvT3U,275
|
|
53
|
+
nntool/plot/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=pS8ucjrevYJZOB2nBbAKXVi5uaizzCZV4NY-0pk053E,275
|
|
54
|
+
nntool/plot/__pycache__/context.cpython-310.pyc,sha256=J_kOkmIV_GQPBuJ_hWQ7YYgGhuFjQpnvWbPRjJzEpD0,1750
|
|
55
|
+
nntool/parser/__init__.py,sha256=991hqyHOJjoaN5WDrIBhEduZs9rmvgV6ShUeZNDAiXo,34
|
|
56
|
+
nntool/parser/parse.py,sha256=IqlcqQfd7GoeTGJkMOrb2_-x0s49Zz_2fA3Fsk_6ysQ,552
|
|
57
|
+
nntool/parser/__pycache__/parse.cpython-310.opt-1.pyc,sha256=v7j8kcFMlDt6-p7cHzgBXRP-vJxEiq4ZFCVgrfw4VFs,601
|
|
58
|
+
nntool/parser/__pycache__/__init__.cpython-310.pyc,sha256=7pZwE5lGf6dnEJsprE9TqUlrKUkvrH9pC9h4WvLR2cw,162
|
|
59
|
+
nntool/parser/__pycache__/parse.cpython-310.pyc,sha256=v7j8kcFMlDt6-p7cHzgBXRP-vJxEiq4ZFCVgrfw4VFs,601
|
|
60
|
+
nntool/parser/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=7pZwE5lGf6dnEJsprE9TqUlrKUkvrH9pC9h4WvLR2cw,162
|
|
61
|
+
nntool/__pycache__/__init__.cpython-310.pyc,sha256=vUDWdiFPntXWhlcy1OzRgdLU7U9oeNV-eT0LlRvxIMA,277
|
|
62
|
+
nntool/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=vUDWdiFPntXWhlcy1OzRgdLU7U9oeNV-eT0LlRvxIMA,277
|
|
63
|
+
nntool/wandb/config.py,sha256=F395QOoByO1-f5ocAmNfEGa7UfZjAWghYxoQgNKV-Ks,3605
|
|
64
|
+
nntool/wandb/__init__.py,sha256=lvn7f3wMkVRz0oyYSjfasFQKjmJ5d6wkDpIDgf0DDKs,44
|
|
65
|
+
nntool/wandb/__pycache__/config.cpython-310.opt-1.pyc,sha256=6LZQaVixEDhAJuPNCh-5kOxc5z_kWBL2tEHWLzFufFc,3783
|
|
66
|
+
nntool/wandb/__pycache__/__init__.cpython-310.pyc,sha256=RELrQA63lgAHAzHWXzstH2k3vmlBuoKXWYYoOeFGq90,180
|
|
67
|
+
nntool/wandb/__pycache__/config.cpython-310.pyc,sha256=SpyfZu8KSSkRuAcpywRrKDiV_C5eNd6T8J3BTuhanZs,3783
|
|
68
|
+
nntool/wandb/__pycache__/__init__.cpython-310.opt-1.pyc,sha256=RELrQA63lgAHAzHWXzstH2k3vmlBuoKXWYYoOeFGq90,180
|
|
69
|
+
nntool-1.3.0.dist-info/METADATA,sha256=Rf-21UEryukOszH46JqHrcdg4C9cbwcljBIIHZFJXKk,769
|
|
70
|
+
nntool-1.3.0.dist-info/._requires.txt,sha256=yNlZBj9Qbibg_4etwM6NkI38o7TjR6UoE0tEoNdYPjY,267
|
|
71
|
+
nntool-1.3.0.dist-info/RECORD,,
|
|
72
|
+
nntool-1.3.0.dist-info/WHEEL,sha256=CzQQWV-lNyM92gr3iaBk8dvO35YDHRxgzkZ-dxumUIM,152
|
|
73
|
+
nntool-1.3.0.dist-info/top_level.txt,sha256=hXO7zSAI-o9plYeUkCiKbkDpQCfTDIfjivyoSEqT28Y,7
|
|
74
|
+
nntool-1.3.0.dist-info/._SOURCES.txt,sha256=yNlZBj9Qbibg_4etwM6NkI38o7TjR6UoE0tEoNdYPjY,267
|
|
75
|
+
nntool-1.3.0.dist-info/._top_level.txt,sha256=MTm3Nh1CVxvWnLnzanzf6CglfDcr-AzoerhtjweyVT4,366
|
|
76
|
+
nntool-1.3.0.dist-info/._dependency_links.txt,sha256=MTm3Nh1CVxvWnLnzanzf6CglfDcr-AzoerhtjweyVT4,366
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
nntool
|