我的神经网络类python代码编程习惯

2021-03-04 10:30:12 浏览数 (1)

  1. 一些需要反复使用的调试语句,可以使用logger输出 给logger设置是告诉它要记录哪些级别的日志,给handler设是告诉它要输出哪些级别的日志,相当于进行了两次过滤。这样的好处在于,当我们有多个日志去向时,比如既保存到文件,又输出到控制台,就可以分别给他们设置不同的级别;logger 的级别是先过滤的,所以被 logger 过滤的日志 handler 也是无法记录的,这样就可以只改 logger 的级别而影响所有输出。两者结合可以更方便地管理日志记录的级别。 logging.FileHandler -> 文件输出 logging.StreamHandler() # 控制台输出 logging.handlers.RotatingFileHandler -> 按照大小自动分割日志文件,一旦达到指定的大小重新生成文件 logging.handlers.TimedRotatingFileHandler -> 按照时间自动分割日志文件 logger.debug(‘debug级别,一般用来打印一些调试信息,级别最低’) logger.info(‘info级别,一般用来打印一些正常的操作信息’) logger.warning(‘waring级别,一般用来打印警告信息’) logger.error(‘error级别,一般用来打印一些错误信息’) logger.critical(‘critical级别,一般用来打印一些致命的错误信息,等级最高’)
代码语言:javascript复制
import logging
from logging import handlers

logger = logging.getLogger('train')
logger.setLevel(level=logging.DEBUG)  # 设置打印级别
formatter = logging.Formatter('%(asctime)s: %(message)s')  # 设置打印格式

stream_handler = logging.StreamHandler()  # 控制台输出
stream_handler.setLevel(logging.DEBUG)
stream_handler.setFormatter(formatter)

file_handler = logging.FileHandler('train1.log', encoding='utf-8')
file_handler.setLevel(level=logging.INFO)
file_handler.setFormatter(formatter)

logger.addHandler(stream_handler)
logger.addHandler(file_handler)

logger.info('info级别,一般用来打印一些正常的操作信息')

time_rotating_file_handler = handlers.TimedRotatingFileHandler(filename='rotating_test.log', when='D',encoding='utf-8')
time_rotating_file_handler.setLevel(logging.INFO)
time_rotating_file_handler.setFormatter(formatter)
logger.addHandler(time_rotating_file_handler)
  1. 代码需要注意包含:断点续训、保存模型、加载模型进行测试这几部分。最好还能画出loss和精度在训练集和验证集的变化曲线。

0 人点赞