mirror of
https://github.com/wassname/pytorch-lightning.git
synced 2026-09-23 13:40:39 +08:00
hparams as dict [blocked by 1041] (#1029)
* hparams as dict * hparams as dict * fixing * fixing * fixing * fixing * typing * typing * chnagelog * update set hparams * use setter * simplify * chnagelog * imports * pylint * typing * Update training_io.py * Update training_io.py * Update lightning.py * Update test_trainer.py * Update __init__.py * Update base.py * Update utils.py * Update test_trainer.py * Update training_io.py * Update test_trainer.py * Update test_trainer.py * Update test_trainer.py * Update test_trainer.py * Update callback_config.py * Update callback_config.py * Update test_trainer.py Co-authored-by: William Falcon <waf2107@columbia.edu>
This commit is contained in:
co-authored by
William Falcon
parent
6a39573267
commit
e586ed4767
@@ -5,7 +5,7 @@ import os
|
||||
import warnings
|
||||
from abc import ABC, abstractmethod
|
||||
from argparse import Namespace
|
||||
from typing import Optional, Union, Dict, Callable
|
||||
from typing import Any, Callable, Dict, Optional, Union
|
||||
|
||||
import torch
|
||||
import torch.distributed as dist
|
||||
@@ -68,6 +68,20 @@ class LightningModule(ABC, GradInformation, ModelIO, ModelHooks):
|
||||
#: True if using amp
|
||||
self.use_amp = False
|
||||
|
||||
@property
|
||||
def hparams(self) -> Namespace:
|
||||
if not hasattr(self, '_hparams'):
|
||||
return Namespace()
|
||||
assert isinstance(self._hparams, dict)
|
||||
return Namespace(**self._hparams)
|
||||
|
||||
@hparams.setter
|
||||
def hparams(self, params: Union[Dict[str, Any], Namespace]) -> None:
|
||||
"""Set the model hyper-parameters."""
|
||||
if isinstance(params, Namespace):
|
||||
params = vars(params)
|
||||
self._hparams = params
|
||||
|
||||
def print(self, *args, **kwargs):
|
||||
r"""
|
||||
Prints only from process 0. Use this in any distributed mode to log only once
|
||||
@@ -1201,7 +1215,8 @@ class LightningModule(ABC, GradInformation, ModelIO, ModelHooks):
|
||||
|
||||
if cls_takes_hparams:
|
||||
if ckpt_hparams is not None:
|
||||
hparams = Namespace(**ckpt_hparams)
|
||||
is_namespace = checkpoint.get('hparams_type') == 'namespace'
|
||||
hparams = Namespace(**ckpt_hparams) if is_namespace else ckpt_hparams
|
||||
else:
|
||||
warnings.warn(
|
||||
f"Checkpoint does not contain hyperparameters but {cls.__name__}'s __init__ contains"
|
||||
|
||||
@@ -36,16 +36,14 @@ class ModelIO(object):
|
||||
"""
|
||||
|
||||
|
||||
def load_hparams_from_tags_csv(tags_csv):
|
||||
def load_hparams_from_tags_csv(tags_csv) -> Namespace:
|
||||
if not os.path.isfile(tags_csv):
|
||||
log.warning(f'Missing Tags: {tags_csv}.')
|
||||
return Namespace()
|
||||
|
||||
tags = {}
|
||||
with open(tags_csv) as f:
|
||||
csv_reader = csv.reader(f, delimiter=',')
|
||||
for row in list(csv_reader)[1:]:
|
||||
tags[row[0]] = convert(row[1])
|
||||
tags = {row[0]: convert(row[1]) for row in list(csv_reader)[1:]}
|
||||
ns = Namespace(**tags)
|
||||
return ns
|
||||
|
||||
|
||||
Reference in New Issue
Block a user