【Python深度学习】——使用Logging记录模型训练过程

【Python深度学习】------使用Logging记录模型训练过程

  • [1. 导入logging库, getLogger()创建日志记录器](#1. 导入logging库, getLogger()创建日志记录器)
  • [2. logger.setLevel()设置log级别](#2. logger.setLevel()设置log级别)
  • [3. FileHandler()设置日志文件路径](#3. FileHandler()设置日志文件路径)
  • [4. StreamHandler()将日志输出到控制台](#4. StreamHandler()将日志输出到控制台)
  • [5. 其他性质](#5. 其他性质)
  • [6. 代码示例](#6. 代码示例)

1. 导入logging库, getLogger()创建日志记录器

python 复制代码
import logging
logger = logging.getLogger()

在getLogger()函数中,可以设置日志记录器的名称, 例如:

python 复制代码
logger = logging.getLogger(__name__)
## 或者
logger = logging.getLogger('my_logger')

2. logger.setLevel()设置log级别

python 复制代码
logger.setLevel(level=logging.DEBUG)
级别 示例 级别数值
DEBUG logging.debug 10
INFO logging.info 20
WARNING logging.warning 30
ERROR logging.error 40
CRITICAL logging.critical 50

3. FileHandler()设置日志文件路径

python 复制代码
file_handler = logging.FileHandler('my_log.log')

4. StreamHandler()将日志输出到控制台

python 复制代码
stream_handler = logging.StreamHandler()
logger.addHandler(stream_handler)

5. 其他性质

  • propagate: 是否将日志消息传递给上级日志记录器
python 复制代码
logger.propagate = False

6. 代码示例

在Geo Transformer代码中, 对logging库中要使用的一些功能, 封装成了一个Logger类, 详情如下:

python 复制代码
import logging

import coloredlogs


def create_logger(log_file=None):
    logger = logging.getLogger()
    logger.handlers.clear()
    logger.setLevel(level=logging.DEBUG)
    logger.propagate = False

    format_str = '[%(asctime)s] [%(levelname).4s] %(message)s'

    stream_handler = logging.StreamHandler()
    colored_formatter = coloredlogs.ColoredFormatter(format_str)
    stream_handler.setFormatter(colored_formatter)
    logger.addHandler(stream_handler)

    if log_file is not None:
        file_handler = logging.FileHandler(log_file)
        formatter = logging.Formatter(format_str, datefmt='%Y-%m-%d %H:%M:%S')
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)

    return logger


class Logger:
    def __init__(self, log_file=None, local_rank=-1):
        if local_rank == 0 or local_rank == -1:
            self.logger = create_logger(log_file=log_file)
        else:
            self.logger = None

    def debug(self, message):
        if self.logger is not None:
            self.logger.debug(message)

    def info(self, message):
        if self.logger is not None:
            self.logger.info(message)

    def warning(self, message):
        if self.logger is not None:
            self.logger.warning(message)

    def error(self, message):
        if self.logger is not None:
            self.logger.error(message)

    def critical(self, message):
        if self.logger is not None:
            self.logger.critical(message)
相关推荐
笨鸟先飞,勤能补拙6 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能7 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
mingo_敏8 小时前
DeepAgents : 权限(Permissions)
人工智能·深度学习·langchain
江畔柳前堤8 小时前
信号的本质——从模拟波形到AI中的数据张量
人工智能·深度学习·机器学习·计算机视觉·数据挖掘·语音识别
浦信仿真大讲堂8 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study8 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
HyperAI超神经9 小时前
15亿参数挑战机器人控制,MiniCPM-RobotManip正式开源;覆盖文本/图/视频/动作序列,英伟达发布全模态模型Cosmos3-Edge
人工智能·深度学习·机器人·多模态·图像生成·具身智能·智能体
卷无止境9 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境9 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd1239 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools