30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
|
import json
|
||
|
class JsonHelper():
|
||
|
"""Class that loads hyperparameters from a json file.
|
||
|
Example:
|
||
|
```
|
||
|
params = Params(json_path)
|
||
|
print(params.learning_rate)
|
||
|
params.learning_rate = 0.5 # change the value of learning_rate in params
|
||
|
```
|
||
|
"""
|
||
|
def __init__(self, json_path):
|
||
|
with open(json_path) as f:
|
||
|
params = json.load(f) # 将json格式数据转换为字典
|
||
|
self.__dict__.update(params)
|
||
|
|
||
|
def save(self, json_path):
|
||
|
with open(json_path, 'w') as f:
|
||
|
json.dump(self.__dict__, f, indent=4) # indent缩进级别进行漂亮打印
|
||
|
|
||
|
def update(self, json_path):
|
||
|
"""Loads parameters from json file"""
|
||
|
with open(json_path) as f:
|
||
|
params = json.load(f)
|
||
|
self.__dict__.update(params)
|
||
|
|
||
|
@property # Python内置的@property装饰器就是负责把一个方法变成属性调用的
|
||
|
def dict(self):
|
||
|
"""Gives dict-like access to Params instance by `params.dict['learning_rate']"""
|
||
|
return self.__dict__
|