fastnlp / fitlog

fitlog是一款在深度学习训练中用于辅助用户记录日志和管理代码的工具

Home Page:https://gitee.com/fastnlp/fitlog

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

argparse结合fitlog的bug

houchenyu opened this issue · comments

你好,最近我想使用argparse模块和fitlog来进行调参实验,但是发现log日志中hyper.log内容显示的不对。

`
parser = argparse.ArgumentParser(description='Hyper Parameters For Traning')
parser.add_argument('-city', type=str, default='lishui', help='select dataset')
parser.add_argument('-nrnn', type=int, default=128, help='Hidden Dimension')
parser.add_argument('-nmlp', type=int, default=128, help='number of hidden size of MLP')
# parser.add_argument('-nlayers', type=int, default=1, help='Number of layers for RNN')

parser.add_argument('-epoch', type=int, default=1000, help='training epoch')
parser.add_argument('-batch', type=int, default=1024, help='Batch Size')
parser.add_argument('-lr', type=float, default=0.001, help='learning rate')

opt = parser.parse_args()
print(opt)

rand_seed = 123

patience = 50
######hyper
city = opt.city
hidden_size_rnn = opt.nrnn
hidden_size_mlp = opt.nmlp
batch_size = opt.batch
lr = opt.lr
max_epoch = opt.epoch
dropouts = None
######hyper`

例如上面代码所示,我通过命令行传入参数,并通过argparse解析传给主程序,并用fitlog的hyper parameter方式记录超参数。
结果在hyper.log中的内容为:
{"hyper": {"city": "opt.city", "hidden_size_rnn": "opt.nrnn", "hidden_size_mlp": "opt.nmlp", "batch_size": "opt.batch", "lr": "opt.lr", "max_epoch": "opt.epoch", "dropouts": "None"}}

fitlog只是简单把 '='前后的内容变成key和value,而没有解析出具体的值

commented

嗯,是的,这样是没办法解析出是什么值的。如果要使用args的值,请直接使用fitlog.add_hyper(opt), ######hyper仅能支持如下的形式

#####hyper
city = 'shanghai'   # 不能是变量,fitlog不会运行你的代码,所以不能知道这个变量取值是多少
batch_size = 32
#####hyper