介绍
在进行深度学习模型训练的过程中,一般会设置log日志,将训练过程的中间结果以及最终结果写入,方便再次打开的时候进行查看。
logging的一些函数这里就不作介绍,其他博客讲的十分详细,这里就主要讲如何快速加入到自己的项目中。
举例
logging既可以输出到屏幕(终端显示),也可以输出到文件,为了在模型中断或者运行时间较长时方便查看log信息。
1.引入头文件
import logging
import argparse
import time
2.封装函数
首先需要对logger进行一些初始化,将其封装成一个函数便于调用。直接copy到项目里面
def create_logger(logger_file_path):
if not os.path.exists(logger_file_path):
os.makedirs(logger_file_path)
log_name = '{}.log'.format(time.strftime('%Y-%m-%d-%H-%M'))
final_log_file = os.path.join(logger_file_path, log_name)
logger = logging.getLogger() # 设定日志对象
logger.setLevel(logging.INFO) # 设定日志等级
file_handler = logging.FileHandler(final_log_file) # 文件输出
console_handler = logging.StreamHandler() # 控制台输出
# 输出格式
formatter = logging.Formatter(
"%(asctime)s %(levelname)s: %(message)s "
)
file_handler.setFormatter(formatter) # 设置文件输出格式
console_handler.setFormatter(formatter) # 设施控制台输出格式
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger
3.在程序入口调用
在调用creat_logger()函数之前,需要先将log文件的保存路径添加到参数列表中(也可以直接对creat_logger函数进行传参)。
creat_logger()函数实现了:路径不存在则自动创建路径,log文件名则是根据日期命名
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='configTemplates')
parser.add_argument('-log_path', default='./results', type=str, help='log file path to save result')
args = parser.parse_args()
logger = create_logger(args.log_path)
logger.info('------Begin Training Model------')
4. 记录训练过程
接下来在训练过程中,计算出每轮训练结果后写入日志文件
想写入哪个数据就在该数据下调用info函数
例如:
cIOU = metric.evaluate()[0][1]
cIOU *= 100.0
pixAcc = 1.0 * total_correct / (np.spacing(1) + total_label)
#计算出当前结果后调用info函数进行写入日志文件
logger.info('cIOU: {}, PA: {}'.format(cIOU, pixAcc))