Python 寫入訓練日志文件並控制台輸出


1. 背景

在深度學習的任務中,通常需要比較長時間的訓練,因此我們會選擇離開電腦。筆者在跟蹤模型表現,

觀察模型accuracy 以及 loss 的時候,比較傳統的方法是在控制台print輸出或者直接使用tensorboard。

但如果是你需要遠程觀察模型表現,那一個時刻記錄的log 文件就非常重要。

(如果你希望不在實驗室,遠程通過訪問正在訓練網絡的服務器的Jupyter Notebook ,實時查看實驗進度。請參考——遠程連接服務器端Jupyter Notebook

 

2. logging 函數

創建 .log 文件並將一些數據在控制台輸出可以通過logging 函數實現。

廢話不多,直接貼代碼:一下函數可以在你想要保存日志文件的路徑——output_dir下生成一個.log 文件,文件名以年.月.日.時.分命名,以免重復。

import logging
import time
import os

def log_creater(output_dir):
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    log_name = '{}.log'.format(time.strftime('%Y-%m-%d-%H-%M'))
    final_log_file = os.path.join(output_dir,log_name)


    # creat a log
    log = logging.getLogger('train_log')
    log.setLevel(logging.DEBUG)

    # FileHandler
    file = logging.FileHandler(final_log_file)
    file.setLevel(logging.DEBUG)

    # StreamHandler
    stream = logging.StreamHandler()
    stream.setLevel(logging.DEBUG)

    # Formatter
    formatter = logging.Formatter(
        '[%(asctime)s][line: %(lineno)d] ==> %(message)s')

    # setFormatter
    file.setFormatter(formatter)
    stream.setFormatter(formatter)

    # addHandler
    log.addHandler(file)
    log.addHandler(stream)

    log.info('creating {}'.format(final_log_file))
    return log

 

3. 結果

保存后的日志文件差不多就是這樣:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM