深度学习训练结果记录---日志文件写入logger 【简洁明了】

本文介绍了如何在深度学习项目中使用Python的logging模块设置和管理日志,包括引入头文件、封装函数以创建和配置logger,以及在程序入口处调用并记录训练过程的关键指标。
摘要由CSDN通过智能技术生成

介绍

在进行深度学习模型训练的过程中,一般会设置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))
  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在 logback-spring.xml 文件中配置 `rollingPolicy` 和 `fileNamePattern` 实现每天单独一个日志文件的功能。具体配置如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 日志输出文件的路径 --> <file>/var/log/myapp/myapp.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天生成一个文件 --> <fileNamePattern>/var/log/myapp/myapp.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 保留最近7天的日志文件 --> <maxHistory>7</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="FILE" /> </root> </configuration> ``` 在上面的配置中,`rollingPolicy` 的 `class` 属性设置为 `ch.qos.logback.core.rolling.TimeBasedRollingPolicy`,表示按时间分割日志文件。`fileNamePattern` 属性指定日志文件的命名格式,由于我们想要每天生成一个文件,因此使用 `%d{yyyy-MM-dd}` 格式,表示以年、月、日为单位进行分割。 以上面的配置为例,每天会生成一个名为 `/var/log/myapp/myapp.2021-01-01.log` 的日志文件,如果在同一天内多次启动应用程序,则会向同一个日志文件中追加日志。如果跨天启动应用程序,则会生成一个新的日志文件。 注意,`maxHistory` 属性表示最多保留多少天的历史日志文件,超过该时间的日志文件将被自动删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值