MindInsight张量可视设计介绍

特性背景

张量可视,能够帮助用户直观查看训练过程中的Tensor值,既支持以直方图的形式呈现Tensor的变化趋势,也支持查看某次step的具体Tensor值。Tensor包括权重值、梯度值、激活值等。

总体设计

Tensor可视主要是解析由MindSpore的TensorSummary算子记录的Tensor数据生成的Summary文件,并把结果返回给前端展示。

MindInsight解析时,会遵循proto文件(Google Protocol Buffer,是一种高效便捷的结构化数据存储方式)来解析Tensor数据,然后把数据缓存起来,在前端查询特定数据时将其返回供前端展示。

Tensor可视支持1-N维的Tensor以表格或直方图的形式展示,对于0维的Tensor,需要通过ScalarSummary来记录并在标量可视中展示。

在表格视图中,可以查询当前缓存中特定step的Tensor数据,后台通过切片操作,使得用户单次可以查询任意0-2维的Tensor数据。

在直方图视图中,可以查询当前缓存中所有step的直方图数据。

后端设计

张量可视相关的类主要有TensorContainer、Histogram以及TensorProcessor类,其中TensorContainer用于保存Tensor的具体值、维度、数据类型、最大值、最小值、直方图等信息,这里的直方图引用了Histogram的数据。Histogram用于处理直方图相关的信息,包括保存桶个数,归一化缓存中所有step的直方图数据等。TensorProcessor用于处理与Tensor相关的HTTP请求,包括获取当前缓存中特定训练作业,特定tag有多少个step,每个step的Tensor统计信息,特定step的特定维度的Tensor数据(单次支持查询最多某两维的数据)以及特定tag的直方图数据。

前端设计

图1:表格展示

图1将用户所记录的张量以表格的形式展示,包含以下功能:

  • 表格中白色方框显示当前展示的是哪个维度下的张量数据,其中冒号:表示当前维度索引范围,和Python索引含义基本一致,不指定具体索引表示当前维度所有值,2:5表示索引2到5(不包括5)的值,可以在方框输入对应的索引或者含有:的索引范围来查询特定维度的张量数据。
  • 拖拽表格下方的空心圆圈可以查询特定步骤的张量数据。

图2:直方图展示

图2将用户所记录的张量以直方图的形式进行展示。

接口设计

在张量可视中,主要有文件接口和RESTful API接口,其中文件接口为summary.proto文件,是MindInsight和MindSpore进行数据对接的接口。 RESTful API接口是MindInsight前后端进行数据交互的接口,是内部接口。

文件接口设计

summary.proto文件为总入口,其中张量的数据(TensorProto)存放在Summary的Value中,如下所示:

{
    message Summary {
        message Image {
            // Dimensions of the image.
            required int32 height = 1;
            required int32 width = 2;
            ...
        }
 
        message Histogram {
          message bucket{
              // Counting number of values fallen in [left, left + width).
              // For the rightmost bucket, the range is [left, left + width].
              required double left = 1;
              required double width = 2;
              required int64 count = 3;
          }
 
          repeated bucket buckets = 1;
          ...
        }
 
        message Value {
            // Tag name for the data.
            required string tag = 1;
 
            // Value associated with the tag.
            oneof value {
                float scalar_value = 3;
                Image image = 4;
                TensorProto tensor = 8;
                Histogram histogram = 9;
            }
        }
 
    // Set of values for the summary.
    repeated Value value = 1;
}

而TensorProto的定义在anf_ir.proto文件中。

MindInsight张量可视设计介绍的更多相关文章

  1. MindInsight计算图可视设计

    MindInsight计算图可视设计 特性背景 计算图可视的功能,主要协助开发者在下面这些场景中使用. 开发者在编写深度学习神经网络的代码时,可以使用计算图的功能查看神经网络中算子的数据流走向,以及模 ...

  2. MindInsight训练可视整体设计介绍

    MindInsight训练可视整体设计介绍 MindInsight是MindSpore的可视化调试调优组件.通过MindInsight可以完成训练可视.性能调优.精度调优等任务. 训练可视功能主要包括 ...

  3. 软件顾问可视设计的得力助手——PowerMockup

    你可能是一位从事信息化的软件顾问,你也可能是一位软件设计师,你须要通过图形直观的向客户表达你的设计意图. 你可能已经积累了非常多的Powerpoint图形元素,但每次都要从以往的文件里到处寻找,浪费您 ...

  4. CYQ.Data V5 分布式自动化缓存设计介绍(二)

    前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但 ...

  5. MockPlus原型设计介绍

    MockPlus原型设计介绍 在第八周的课堂上,王文娟老师在校园系统上发布了对于自行选择的原型设计软件进行资料查找以及自学的任务.因为之前的课程学习需要,我们已经大概掌握了原型设计软件Axure的使用 ...

  6. Android基础-系统架构分析,环境搭建,下载Android Studio,AndroidDevTools,Git使用教程,Github入门,界面设计介绍

    系统架构分析 Android体系结构 安卓结构有四大层,五个部分,Android分四层为: 应用层(Applications),应用框架层(Application Framework),系统运行层(L ...

  7. ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计

    ClickHouse核心架构设计是怎么样的?ClickHouse核心架构模块分为两个部分:ClickHouse执行过程架构和ClickHouse数据存储架构,下面分别详细介绍. ClickHouse执 ...

  8. Axure原型设计介绍

    在第八周的课堂上,王文娟老师在校园系统上发布了对于自行选择的原型设计软件进行资料查找以及自学的任务.因为之前的课程学习需要,我们大概掌握了原型设计软件Axure的使用,下面是一些我们学习过程中的介绍 ...

  9. CYQ.Data V5 分布式自动化缓存设计介绍

    前方: 其实完成这个功能之前,我就在思考:是先把想法写了来,和大伙讨论讨论后再实现,还是实现后再写文论述自己的思维. 忽然脑后传来一个声音说:你发文后会进入发呆阶段. 所以还是静下心,让我轻轻地把代码 ...

随机推荐

  1. Python3解决棋盘覆盖问题的方法示例

    本文实例讲述了Python3解决棋盘覆盖问题的方法.分享给大家供大家参考,具体如下: 问题描述: 在2^k*2^k个方格组成的棋盘中,有一个方格被占用,用下图的4种L型骨牌覆盖所有棋盘上的其余所有方格 ...

  2. hdu3329 二分+搜索

    题意:       给你一个岛,然后岛的外侧开始涨水(内侧不涨只有外侧,也就是里面的0永远是0),问最少涨水多少才能把岛分成两个或者两个以上. 思路:       可以二分枚举水的高度(数据不大估计暴 ...

  3. 从苏宁电器到卡巴斯基第10篇:我在苏宁电器当营业员 II

    之所以是主推,其实是有原因的 据我所知,尽管诺基亚卖的很好,但是他们的厂促的待遇却很一般,估计也就一千多两千的样子,撑死两千多.但是呢,记得当时我们的卖场里面还有联想手机,别看卖得相当次,但是他们的厂 ...

  4. Docker用Commit给容器做快照

    关于 commit 镜像是容器的基础,每次执行 docker run 的时候都会指定哪个镜像作为容器运行的基础. 镜像是多层存储,每一层是在前一层的基础上进行修改:而容器同样也是多层存储,是在以镜像为 ...

  5. 15.PHP_PHP与Ajax

    PHP与Ajax 刚刚下班回来地铁上看的这一章,觉得这东西思路可以.确实解决了WEB的两个大的问题,流量和计算量问题.简单说下我的理解,然后在根据资料整理下学习笔记. 两个问题: 1.展示一个WEB网 ...

  6. linux安装MySQL报 error while loading shared libraries: libtinfo.so.5 解决办法

    MySQL服务启动报错 error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No ...

  7. Spring Boot & Cloud 轻量替代框架 Solon 1.3.35 发布

    Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...

  8. NtQuerySystemInformation获取进程/线程状态

    __kernel_entry NTSTATUS NtQuerySystemInformation( SYSTEM_INFORMATION_CLASS SystemInformationClass, P ...

  9. 在Visual Studio 中使用git——文件管理-下(六)

    在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...

  10. 【BUAA 软工热身作业】继往开来,勇攀高峰

    项目 内容 课程:2020春季软件工程课程博客作业(罗杰,任健) 博客园班级链接 作业:热身作业,阅读并撰写博客 作业要求 课程目标 学习大规模软件开发的技巧与方法,锻炼开发能力 作业目标 学习前辈经 ...