天天看点

利用python的absl配置参数

将深度学习应用到CV领域必不可少的要搭建模型,训练网络,一般模型搭建为一个py文件,网络训练为一个py文件,其中网络训练需要大量参数设置,比如张量运行的设备(CPU or GPU),初始学习率,训练次数,批次大小,图像裁剪尺寸等等,如果我们在程序中随意定义并初始化这些参数不免显得程序非常凌乱,而且维护性较差,同时占用内存,那么一个好的方法就是在程序的开头将其全部声明和初始化并且打包成一个整体,下面看代码:

from absl import flags, app

flags.DEFINE_string('参数名', '初始值', '参数的解释说明') # 定义字符串
flags.DEFINE_integer('参数名', '初始值', '参数的解释说明') # 定义整型数据
flags.DEFINE_float('参数名', '初始值', '参数的解释说明') # 定义浮点型数据
flags.DEFINE_boolean('参数名', '初始值', '参数的解释说明') # 定义布尔型

FLAGS = flags.FLAGS

def train(args):
 """
 """

if __name__ == '__main__':
	app.run(train)
           

另外,还可以从

absl

中导入

logging

logging.info()

输出日志信息,打个比方:

logging.info('Conv2D shape: %s', x.shape)

。尽量使用日志打印信息而不是

print

,日志打印的信息包含时间、文件、行数等便于维护和修改,而

print

是不包含这些的。

继续阅读