1. 程式人生 > 實用技巧 >【Model Log】模型評估指標視覺化,自動畫Loss、Accuracy曲線圖工具,無需人工參與!

【Model Log】模型評估指標視覺化,自動畫Loss、Accuracy曲線圖工具,無需人工參與!

1. Model Log 介紹

Model Log 是一款基於 Python3 的輕量級機器學習(Machine Learning)、深度學習(Deep Learning)模型訓練評估指標視覺化工具,與 TensorFlow、Pytorch、PaddlePaddle結合使用,可以記錄模型訓練過程當中的超引數、Loss、Accuracy、Precision、F1值等,並以曲線圖的形式進行展現對比,輕鬆三步即可實現。

通過調節超引數的方式多次訓練模型,並使用 Model Log 工具進行記錄,可以很直觀的進行模型對比,堪稱調參神器。以下是使用工具後模型訓練時 Loss 的變化曲線圖。訪問線上體驗版:

http://mantchs.com/model_log.html

通過上圖可以很清晰的看出兩個模型的訓練效果,而且在表格當中高亮顯示修改過的超引數,方便進行模型分析。

2. Model Log 特性

  • 輕量級、無需任何配置、極簡API、開箱即用。
  • 只需要把模型的超引數和評估指標資料通過API新增即可,輕鬆三步即可實現。
  • 高亮顯示修改過的超引數,方便進行模型分析。
  • 自動檢測和獲取正在訓練的模型資料,並進行視覺化,無需人工參與。
  • 使用 SQLite 輕量級本地資料庫儲存,可供多個使用者同時使用,保證每個使用者看到的資料是獨立的。
  • 視覺化元件採用 Echarts 框架,互動式曲線圖設計,可清晰看到每個 epoch 週期的指標資料和變化趨勢。

3. Model Log 演示地址

訪問線上體驗版:http://mantchs.com/model_log.html

4. Model Log 安裝

Python3 版本以上,通過 pip 進行安裝即可。

pip install model-log

注意:若安裝的過程中出現以下情況,說明 model-log 命令已經安裝到Python下的bin目錄中,如果直接輸入 model-log 可能會出現 command not found,可以直接到bin目錄下執行。

5. Model Log 使用

5.1 啟動 web 端

Model Log 安裝成功後,Linux、Mac使用者直接終端輸入以下命令,Windows使用者在cmd視窗輸入:

model-log

預設啟動 5432埠,可以在啟動命令上使用引數 -p=5000 指定埠號。若提示命令不存在,可以直接到Python/3.7/bin目錄下執行。

啟動後可在瀏覽器輸入網址進入:http://127.0.0.1:5432

也可訪問線上體驗版:http://mantchs.com/model_log.html

  • web首頁是專案列表,一個專案可以有多個模型,這些模型可以在曲線圖中直觀比較。

  • web 端會自動檢測是否有新模型開始訓練,如果有,直接會跳轉到相應的 loss 等評價指標頁,同時會自動獲取指標資料進行呈現。

  • 可供多個使用者使用,新增暱稱即可,SQLite 輕量級本地資料庫儲存,保證每個使用者看到的資料是獨立的。

  • 通過點選曲線圖下方的圖例,可切換不同模型的評估曲線。

5.2 Model Log API使用

輕鬆三步即可使用

  1. 第一步:先建立 ModelLog 類,並新增必要的屬性

    from model_log.modellog import ModelLog
    """
    :param nick_name: str,暱稱,多人使用下可起到資料隔離。
    :param project_name: str,專案名稱。
    :param project_remark: str,專案備註,預設為空。 專案名稱如不存在會新建
    """
    model_log = ModelLog(nick_name='mantch', project_name='demo實體識別', project_remark='') """
    :param model_name: str,模型名稱
    """
    model_log.add_model_name(model_name='BILSTM_CRF模型') """
    :param remark: str,模型備註
    """
    model_log.add_model_remark(remark='模型備註') """
    :param param_dict: dict,訓練引數字典
    :param param_type: str,引數型別,例如:TF引數、Word2Vec引數等。
    """
    model_log.add_param(param_dict={'lr':0.01}, param_type='tf_param')
  2. 第二步:模型訓練的每次 epoch (週期)可以新增評估指標資料,評估指標可以進行以下選擇。

    第一次呼叫該 API 時,會把以上設定的資料(模型名稱、備註等)持久化到 SQLite 資料庫,並且 web 端會自動獲取評估指標資料進行圖形化展示。

    """
    :param metric_name: str,評估指標名稱,
    可選擇['train_loss', 'test_loss', 'test_acc', 'test_recall', 'test_precision', 'test_F1'] :param metric_value: float,評估指標數值。
    :param epoch: int,訓練週期 metric_name 引數只可以選擇以上六種
    第一次呼叫該 API 時,會把以上設定的資料(模型名稱、備註等)持久化到 SQLite 資料庫,並且 web 端會自動獲取資料進行圖形化展示。
    可以在每個 epoch 週期的最後使用該 API 新增訓練集和測試集的評估指標,web 端會自動獲取該資料。
    """
    model_log.add_metric(metric_name='train_loss', metric_value=4.5646, epoch=1)
  3. 第三步:模型訓練完成後,可以新增最好的一次評估資料。

    """
    :param best_name: str,最佳評估指標名稱,
    :param best_value: float,最佳評估指標數值。
    :param best_epoch: int,訓練週期 新增當前模型訓練中最佳的評估資料,一般放到模型訓練的最後進行新增。
    """
    model_log.add_best_result(best_name='best_loss', best_value=1.2122, best_epoch=30) """
    關閉 SQLite 資料庫連線
    """
    model_log.close()

5.3 Model Log 使用示例

MIST手寫數字識別:https://github.com/NLP-LOVE/Model_Log/blob/master/demo_TF_MIST.py