• 使用Python中的log模块将loss输出到终端与保存到文件


    记得之前对深度学习中得loss输出,经常自己会将输出流重新定向到一个文件中,

    比如

    python main.py 2 > &1 | tee log.txt

    对于caffe这种c++框架而言,用输出流重定向的方法是比较妥的,但是这样输出会有一个问题,比如,出了文件中print特定格式得loss之外,

    你进行debug的时候,想print一些东西,debug print的结果也print到了文件中,但是实际上你并不想要这种结果,或者有时候输出流重定向有一定得延迟,这个时候需要等一等才能看到输出的loss

    对于python,实际上有更好的方法,那就是log模块。

    关于log模块,这里只讲如何使用log模块同时输出想要print得信息到终端与保存要print得信息到文件中

     1 # -*-coding:utf-8-*-
     2 # 设置格式
     3 import logging
     4 
     5 
     6 def get_log(file_name):
     7     logger = logging.getLogger('train')  # 设定logger的名字
     8     logger.setLevel(logging.INFO)  # 设定logger得等级
     9 
    10     ch = logging.StreamHandler()  # 输出流的hander,用与设定logger的各种信息
    11     ch.setLevel(logging.INFO)  # 设定输出hander的level
    12 
    13     fh = logging.FileHandler(file_name, mode='a')  # 文件流的hander,输出得文件名称,以及mode设置为覆盖模式
    14     fh.setLevel(logging.INFO)  # 设定文件hander得lever
    15 
    16 
    17 
    18     formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
    19     ch.setFormatter(formatter)  # 两个hander设置个是,输出得信息包括,时间,信息得等级,以及message
    20     fh.setFormatter(formatter)
    21     logger.addHandler(fh)  # 将两个hander添加到我们声明的logger中去
    22     logger.addHandler(ch)
    23     return logger
    View Code

    在使用的时候,直接传入路径,

    1 logger = setting.get_log('log.txt')

    然后就可以愉快的输出信息到到终端以及输出信息到文件中啦

    比如,我原来打印loss可能需要这么写

    1 print("Epoch [%d/%d], Iter [%d/%d] Loss: %.4f" % (epoch + 1, 80, i + 1, 500, loss.data.item()))

    现在打印loss可以这样写

    1 logger.info("Epoch [%d/%d], Iter [%d/%d] Loss: %.4f" % (epoch + 1, 80, i + 1, 500, loss.data.item()))

    因为我们刚刚把两个hander给add到了我们声明得logger中,所以,上面一行代码可以同时输出信息到终端,同时也可以输出信息到文件中

  • 相关阅读:
    02_排版标记
    21_listview展示数据内容回顾
    00_前情回顾
    20_通过listview展示数据库数据_完成
    18_simpleadapter和ArrayAdapter总结
    19_通过listview展示数据库数据_数据库准备数据完成
    前端面试题-url、href、src
    前端面试题-url、href、src
    前端面试题-url、href、src
    这8个方法让你成为最优秀的程序员
  • 原文地址:https://www.cnblogs.com/yongjieShi/p/9437567.html
Copyright © 2020-2023  润新知