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

【Model Log】模型评估指标可视化,自动画Loss、Accuracy曲线图工具,无需人工参与!的更多相关文章

  1. 【机器学习】--模型评估指标之混淆矩阵,ROC曲线和AUC面积

    一.前述 怎么样对训练出来的模型进行评估是有一定指标的,本文就相关指标做一个总结. 二.具体 1.混淆矩阵 混淆矩阵如图:  第一个参数true,false是指预测的正确性.  第二个参数true,p ...

  2. 召回率、AUC、ROC模型评估指标精要

    混淆矩阵 精准率/查准率,presicion 预测为正的样本中实际为正的概率 召回率/查全率,recall 实际为正的样本中被预测为正的概率 TPR F1分数,同时考虑查准率和查全率,二者达到平衡,= ...

  3. 基于sklearn的metrics库的常用有监督模型评估指标学习

    一.分类评估指标 准确率(最直白的指标)缺点:受采样影响极大,比如100个样本中有99个为正例,所以即使模型很无脑地预测全部样本为正例,依然有99%的正确率适用范围:二分类(准确率):二分类.多分类( ...

  4. Python机器学习笔记:常用评估指标的用法

    在机器学习中,性能指标(Metrics)是衡量一个模型好坏的关键,通过衡量模型输出y_predict和y_true之间的某种“距离”得出的. 对学习器的泛化性能进行评估,不仅需要有效可行的试验估计方法 ...

  5. Spark ML机器学习库评估指标示例

    本文主要对 Spark ML库下模型评估指标的讲解,以下代码均以Jupyter Notebook进行讲解,Spark版本为2.4.5.模型评估指标位于包org.apache.spark.ml.eval ...

  6. ubuntu之路——day10.2单一数字评估指标与满足和优化的评估指标

    单一数字评估指标: 我们在平时常用到的模型评估指标是精度(accuracy)和错误率(error rate),错误率是:分类错误的样本数站样本总数的比例,即E=n/m(如果在m个样本中有n个样本分类错 ...

  7. Scikit-learn:模型评估Model evaluation

    http://blog.csdn.net/pipisorry/article/details/52250760 模型评估Model evaluation: quantifying the qualit ...

  8. 【转载 | 翻译】Visualizing A Neural Machine Translation Model(神经机器翻译模型NMT的可视化)

    转载并翻译Jay Alammar的一篇博文:Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models Wi ...

  9. PLUTO平台是由美林数据技术股份有限公司下属西安交大美林数据挖掘研究中心自主研发的一款基于云计算技术架构的数据挖掘产品,产品设计严格遵循国际数据挖掘标准CRISP-DM(跨行业数据挖掘过程标准),具备完备的数据准备、模型构建、模型评估、模型管理、海量数据处理和高纬数据可视化分析能力。

    http://www.meritdata.com.cn/article/90 PLUTO平台是由美林数据技术股份有限公司下属西安交大美林数据挖掘研究中心自主研发的一款基于云计算技术架构的数据挖掘产品, ...

随机推荐

  1. Rocket - util - MaskGen

    https://mp.weixin.qq.com/s/_aJqf1cFJDK5RVRBhxTWOw   介绍MaskGen的实现.   ​​   1. 基本介绍   给定总线宽度beatBytes,根 ...

  2. 我一个二本大学是如何拿到阿里offer的

    作者:薛勤,互联网从业者,编程爱好者. 本文首发自公众号:代码艺术(ID:onblog)未经许可,不可转载 01:终于步入大学 我既没有跨过山和大海,也没有穿过人山人海,我就是我,一个普通本科大学生. ...

  3. (Java实现) 洛谷 P1098 字符串的展开

    import java.util.ArrayList; import java.util.Scanner; public class zifuchuandezhankai { static Array ...

  4. Java实现 LeetCode 640 求解方程(计算器的加减法计算)

    640. 求解方程 求解一个给定的方程,将x以字符串"x=#value"的形式返回.该方程仅包含'+',' - '操作,变量 x 和其对应系数. 如果方程没有解,请返回" ...

  5. Java实现十六进制转十进制

    基础练习 十六进制转十进制 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进 ...

  6. Java实现 LeetCode 347 前 K 个高频元素

    347. 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输 ...

  7. Java实现 LeetCode 343 整数拆分(动态规划入门经典)

    343. 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × ...

  8. Java实现 LeetCode 312 戳气球

    312. 戳气球 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left ...

  9. Java实现 LeetCode 64 最小路径和

    64. 最小路径和 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [ [1,3,1], ...

  10. java实现子集和问题

    1 问题描述 求n个正整数构成的一个给定集合A = {a1,a2,a3,-,an}的子集,子集的和要等于一个给定的正整数d.请输出所有符合条件的子集. 2 解决方案 2.1 全排列思想求解 方法1:首 ...