精华内容
下载资源
问答
  • 51单片机控制LCD1602模块结构图和使用说明,学习LCD1602必备资料!
  • TensorBoard中graph模块图结构分析

    千次阅读 2019-01-14 09:11:13
    TensorBoard中的graph是一种计算,里面的点用于表示Tensor本身或者运算符,中的边则代表Tensor的流动或者控制关系。 本文主要从代码的层面,分析graph的数据来源与结构。 一般来说,我们在启动TensorBoard的...

    在上一篇文章中,我们介绍了如何使用源码对TensorBoard进行编译,没有定制需求的可以直接使用pip进行安装。

    TensorBoard中的graph是一种计算图,里面的点用于表示Tensor本身或者运算符,图中的边则代表Tensor的流动或者控制关系。

    本文主要从代码的层面,分析graph的数据来源与结构。

    一般来说,我们在启动TensorBoard的时候会使用--logdir参数配置文件路径(或者设置数据库位置),这些日志文件为TensorBoard提供了数据。于是我们打开一个日志文件,查看里面的内容

    我们看到,文件是通过二进制展示的,因此无法直接读取文件的内容。

    回到浏览器中,进入graph页面,通过开发者工具发现,构造图的时候调用了一个接口

    http://localhost:6006/data/plugin/graphs/graph?large_attrs_key=_too_large_attrs&limit_attr_size=1024&run=task1

    用浏览器打开这个地址,看到以下内容

    node {
      name: "Input/X"
      op: "Placeholder"
      attr {
        key: "_output_shapes"
        value {
          list {
            shape {
              unknown_rank: true
            }
          }
        }
      }
      attr {
        key: "dtype"
        value {
          type: DT_FLOAT
        }
      }
      attr {
        key: "shape"
        value {
          shape {
            unknown_rank: true
          }
        }
      }
    }
    ...

    每个node都能够与图中的一个节点相对应,因此我们可以确定,这个接口里返回的node,就是构成图所需要的数据结构。

    那么,TensorBoard是如何将日志文件转化为图的呢?

    TesnorBoard中的每个模块都是以plugin存在的,我们进入tensorboard/plugin/graph/graphs_plungin.py,在这个文件中定义了graph相关的接口

    def get_plugin_apps(self):
        return {
            '/graph': self.graph_route,
            '/runs': self.runs_route,
            '/run_metadata': self.run_metadata_route,
            '/run_metadata_tags': self.run_metadata_tags_route,
        }

    我们可以看到,‘/graph’这个接口返回值为self.graph_route,在这个文件中搜索graph_route方法

      @wrappers.Request.application
      def graph_route(self, request):
        """Given a single run, return the graph definition in protobuf format."""
        run = request.args.get('run')
        if run is None:
          return http_util.Respond(
              request, 'query parameter "run" is required', 'text/plain', 400)
    
        limit_attr_size = request.args.get('limit_attr_size', None)
        if limit_attr_size is not None:
          try:
            limit_attr_size = int(limit_attr_size)
          except ValueError:
            return http_util.Respond(
                request, 'query parameter `limit_attr_size` must be an integer',
                'text/plain', 400)
    
        large_attrs_key = request.args.get('large_attrs_key', None)
    
        try:
          result = self.graph_impl(run, limit_attr_size, large_attrs_key)
        except ValueError as e:
          return http_util.Respond(request, e.message, 'text/plain', code=400)
        else:
          if result is not None:
            (body, mime_type) = result  # pylint: disable=unpacking-non-sequence
            return http_util.Respond(request, body, mime_type)
          else:
            return http_util.Respond(request, '404 Not Found', 'text/plain',
                                     code=404)

    在这个方法中,分别取了“run”,”limit_attr_size“和“large_attrs_key”三个参数,和前面url所调用的参数一致,说明这个是我们要找的方法。在方法的最后,调用了self.graph_impl生成了图,我们继续查看这个方法

    def graph_impl(self, run, limit_attr_size=None, large_attrs_key=None):
        """Result of the form `(body, mime_type)`, or `None` if no graph exists."""
        try:
          graph = self._multiplexer.Graph(run)
        except ValueError:
          return None
        # This next line might raise a ValueError if the limit parameters
        # are invalid (size is negative, size present but key absent, etc.).
        process_graph.prepare_graph_for_ui(graph, limit_attr_size, large_attrs_key)
        return (str(graph), 'text/x-protobuf')  # pbtxt

    这个方法调用了self._multiplexer.Graph(run)生成图。_multiplexer是一个event_multiplexer实例,在graph_plugln初始化时通过base_plaugin.TBContext获得。

      def __init__(self, context):
        """Instantiates GraphsPlugin via TensorBoard core.
    
        Args:
          context: A base_plugin.TBContext instance.
        """
        self._multiplexer = context.multiplexer

    进入tensorboard/backend/event_processing/event_multiplexer,找到Graph方法

      def Graph(self, run):
        """Retrieve the graph associated with the provided run.
    
        Args:
          run: A string name of a run to load the graph for.
    
        Raises:
          KeyError: If the run is not found.
          ValueError: If the run does not have an associated graph.
    
        Returns:
          The `GraphDef` protobuf data structure.
        """
        accumulator = self.GetAccumulator(run)
        return accumulator.Graph()
    
     def GetAccumulator(self, run):
        """Returns EventAccumulator for a given run.
    
        Args:
          run: String name of run.
    
        Returns:
          An EventAccumulator object.
    
        Raises:
          KeyError: If run does not exist.
        """
        with self._accumulators_mutex:
          return self._accumulators[run]

    Graph方法获取了run对应的accumulator实例,并返回了这个实例的Graph方法的返回值。我们进入tensorboard/backend/event_processing/event_accumulator,找到Graph()方法

      def Graph(self):
        """Return the graph definition, if there is one.
    
        If the graph is stored directly, return that.  If no graph is stored
        directly but a metagraph is stored containing a graph, return that.
    
        Raises:
          ValueError: If there is no graph for this run.
    
        Returns:
          The `graph_def` proto.
        """
        graph = tf.GraphDef()
        if self._graph is not None:
          graph.ParseFromString(self._graph)
          return graph
        raise ValueError('There is no graph in this EventAccumulator')

    事实上,它返回了一个GraphDef图,因此我们也可以通过将日志转换为GraphDef的方式读取日志。

    # 导入要用到的基本模块。为了在python2、python3 中可以使用E侣兼容的 print 函数
    from __future__ import print_function
    import numpy as np
    import tensorflow as tf
    
    # 创建图和Session
    graph = tf.Graph()
    sess = tf.InteractiveSession(graph=graph)
    
    #日志路径
    model_fn = '/log/events.out.tfevents.1535957014.ubuntu'
    
    for e in tf.train.summary_iterator(model_fn):
        if e.HasField('graph_def'):
        	graph = e.graph_def;
        	graph_def = tf.GraphDef()
        	graph_def.ParseFromString(graph)
        	print(graph_def)
    

    我们新建一个python文件,修改日志路径为自己的日志位置,便可以得到与TensorBoard相同的内容。

    展开全文
  • TensorBoard中的graph是一种计算,里面的点用于表示Tensor本身或者运算符,中的边则代表Tensor的流动或者控制关系。 本文主要从代码的层面,分析graph的数据来源与结构。 一般来说,我们在启动TensorBoard的...
  • 只要在尖端出现Laurent多项式,这些恒等式的形式就可以确定Laurent多项式的消失控制整个模块化恒等式的模式。 其次,模块函数系列已扩展为包括所有具有导数耦合和世界单调费米子的。 这些扩展的模块化图形...
  • 摘要:分析了图形点阵式液晶显示模块LCD...LCD240128A是热致液晶STN型图形点阵式显示模块,它由STN型液晶板、液晶显示控制器、液晶驱动器、背光板等组成,1怕示是LCD240128A模块结构框图。它的整屏尺寸为114×104mm
  • 1.常见的启发式规则 启发式: 常见的6种启发式规则: 扇出:一个模块控制下级模块的数量 扇入:一个模块被上级模块共享的数量

    1.常见的启发式规则

    启发式:
    在这里插入图片描述
    常见的6种启发式规则:

    在这里插入图片描述
    扇出:一个模块控制下级模块的数量
    扇入:一个模块被上级模块共享的数量

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  •  液晶显示模块是一种将液晶显示器件、连接件、集成电路、PCB线路板、背光源、结构件装配在一起的组件。英文名称叫"LCD Module",简称"LCM",中文一般称为"液晶显示模块".实际上它是一种商品化的部件。根据我国有关...
  • 把剩余IO集中引出以方便后期扩展,如寻迹 、走迷宫 、蓝牙控制 原理框图 软件框架 电路城语:此资料为卖家免费分享,不提供技术支持,请大家使用前验证资料的正确性!如涉及版权问题,请联系管理员删除! 附件包含...
  • Odoo-初识系统-模块目录结构

    千次阅读 2017-09-18 11:06:39
    Stock模块目录结构图 controllers 自定义的控制器实现,具体用法参考website模块;自定义一些网页或功能可通过Controller实现 data 初始化数据文件目录 初始化数据文件 如图所示在安装模块时会在数据库表...

    Odoo模块目录分析以stock模块为例

    Stock模块目录结构图

    controllers

    自定义的控制器实现,具体用法参考website模块;自定义一些网页或功能可通过Controller实现

    data

    初始化数据文件目录

    初始化数据文件


    如图所示在安装模块时会在数据库表stock_location中添加一条记录,该记录的name字段值为Physical Locations,usage字段为view,company_id字段为空

    doc

    模块说明文档目录

    i18n

    国际化文件目录,针对不同语言有相应的翻译文件与其对应,用户登录成功后在首选中修改语言后,系统会自动查找相应的翻译文件

    models

    模块中使用到的所有对象模型,相应的业务逻辑代码都在次目录下的文件中,模型对象继承自models.Model

    report

    模块中有关的报表模型或者相应报表视图文件

    security

    权限控制目录,ir.model.access.csv文件中保存不同用户分组对相应模型对象的增删改查的权限控制
    *_security.xml文件中定义了用户组以及用户组的分类,用户组就是在ir.model.access.csv中被授权的对象

    static

    静态资源目录
    description目录是一个项目描述目录,icon.png是模块的图片,在应用看板中可以看到;此文件名称都是固定的,图片尺寸最好是100*100;也可在此目录下使用一些html格式的文件对模块做一个描述
    src目录是一些资源目录如:js、css、images、xml

    views

    视图文件目录
    models目录下的模型对象的视图文件,如表单视图、列表视图、搜索视图、看板视图等等

    wizard

    向导目录
    向导模型在数据库中也会建立相应的数据库表,向导保存的是一些临时使用的数据,视图上多以弹出框形式展示,向导产生数据为临时数据不会长时间在数据库中保存,模型对象继承自models.TransientModel

    '__manifest__.py'

    模块配置文件
    name: 模块名称
    version: 模块版本
    category: 模块分类
    sequence:模块的序号
    summary:模块概述
    description: 模块功能描述
    author:模块作者
    website:模块主页
    depends: 模块依赖的模块集合
    demo:演示数据文件集合
    data: 模块的所有视图文件集合
    qweb:自定义的Odoo视图文件集合
    installable: 模块是否可以安装
    application: 模块是否是应用
    auto_install:模块是否会自动安装


    From:http://www.jianshu.com/p/d7293eb127c9
     

    展开全文
  • ABB机器人紧凑型控制柜内部结构) 原创工业机器人辅导员工业机器人辅导员2019-07-16 ABB机器人控制柜类型有很多,比如IRC5双柜,标准单柜,紧凑型以及喷涂柜IRC5P。下面分享一下IRC5紧凑型控制柜的内部结构...

    ABB机器人紧凑型控制柜内部结构(图)

    原创 工业机器人辅导员 工业机器人辅导员 2019-07-16

     

    ABB机器人控制柜类型有很多,比如IRC5双柜,标准单柜,紧凑型以及喷涂柜IRC5P。下面分享一下IRC5紧凑型控制柜的内部结构。

     

    1、IRC5紧凑型控制柜的正面接线面板,动力电源面板以及控制面板。

     

    2、控制柜内部与标准型控制柜硬件功能基本一样,电源分配模块,主计算机,轴计算机,安全板,IO信号板,接触器单元,电容包,背部风扇,泄流电阻以及SD卡等等。有兴趣的朋友可以想一下与标准控制柜有什么区别,比如紧凑型的控制柜没有变压器,还有什么等等不一样。

     

    3、这一张可以看到驱动单元,与通讯方式接口部位。

     

    4、关于控制柜的散热风向,有利于在环境中延长使用寿命。好的安装方向可以降低一定的污染程度。

    有兴趣的朋友可以关注或者研究一下SafeMove这个功能,一种基于电子/软件控制技术的解决方案。另外有很多朋友提出的问题,我会在后面逐步整理出来。

    感谢关注,有问题请留言!

    工业机器人辅导员

    展开全文
  • 3.1 案例展现实现单击界面上开始采集按钮开始采集按钮文本提示符号为停止...炎热22~30-稍热14~22-舒适8~14-寒冷寒冻)再次单击该停止采集按钮按钮文本重新显示为开始采集界面上的对应参数保持不变案例运行界面如所示3.
  • 无线模块主要用于系统调试过程中火箭模型的状态数据回传,便于快速高效的调试抛掷在空中的控制系统,能够根据蓝牙无线模块传回的状态数据适当更改控制算法和修正控制模型。 动量轮快速制动模块 动量轮快速制动部分...
  • 系统结构图

    千次阅读 2012-07-10 10:29:47
    结构化设计方法使用的描述方式是系统结构图,也称结构图或控制结构图。它表示了一个系统 (或功能模块) 的层次分解关系,模块之间的调用关系,以及模块之间数据流和控制流信息的传递关系,它是描述系统物理结构的主要图表...
  • 如下所示 我们需将在Index.php文件中添加每个模块控制器所在目录,之后就可以通过类似于http://localhost:8080/ZF_Test/public/purchase/的URL进行访问(ZF_Test是用于测试ZF代码的目录,public则是对外发布的...
  •  首先下载了一个ThinkPHP3.2.3,目录结构如下:(只有Home模块、Index控制器、index操作方法)  然后找了一个简易的错误404页面404.html放到了根目录: 【空模块】 访问一个不存在的模块Admin,错误提示:  ...
  • 模块:库存,销售,购买,工厂,员工,计算,会计(门户),工资管理,带有图形的库存控制和财务控制管理模块。 有关文档和数据库结构,请参见文档目录。 链接到屏幕截图: : 链接到文档: : 链接到安装: : ...
  • Verilog HDL语言作为硬件描述语言有其独特的优势:在门级描述的底层,描述的设计思想、电路结构和逻辑关系清晰明了,设计语言简练、易学易用,模块化分层结构在大规模设计时具有优势。如果使用Verilog把控制功能集成...
  • 并通过esp8266模块实现对网络通讯的控制。 代码中使用了一些stm32开源库。 还涉及某些网络部署。 利用stm32单片机与舵机的机械结构完成开锁。并通过ESP8266模块实现网络通信进行控制。代码中利用了部分stm32的开源...
  •  本模块利用神经网络的自学功能,设计一种在线智能型位置控制算法,图1所示为半闭环位置伺服控制系统结构图。  图1 半闭环位置伺服控制框图  由于丝杠螺距误并以及受载后丝杠 轴承变形等影响,半闭环对检测...
  • 文章目录一、程序控制结构二、结构化程序设计(一)结构化基本原则1、自顶向下2、逐步求精3、模块化4、限制使用goto语句(二)三种流程控制结构1、顺序结构(Sequence Structure)2、选择结构(Selection Structure...
  • 随着通信、电子技术的迅速发展,智能家居... 远程控制和报警系统主要包括:GSM/GPRS模块、供电系统、无线收发模块、微控制器、拍照和存储模块、语音模块和用户手机。系统功能如1所示。  系统选用了多种传感器采
  • 1、软件设计的启发规则有那些? 答:1.改进软件结构提高模块独立性 2. 模块规模应该适中 ...​ 层次模块结构图主要关心的是模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系,而并...
  • LabVIEW基本概念系列视频。执行架构包含图形化代码以控制内部代码何时运行以及如何运行。最常见的执行架构即为While循环、For循环、以及条件结构。...该模块将说明结构的功能,以及何时应该在NI LabVIEW软件中使用。
  • 位置式PID控制算法流程  (1)包含必要的头文件及定义程序需要的结构。  : window._bd_share_config = { "common": { "bdSnsKe
  • 示波器类控制模块

    2020-12-23 18:01:22
    1.设备组成 ETest_RT系统主要由硬件部分与软件部分组成。硬件部分由上位机和实时下位机组成,上位机采用...ETest_RT系统的硬件结构原理如下所示。 ETest_RT采用构件化分层的软件开发框架,软件底层代码基于 GCC
  • 存储器映像控制模块控制多主存取的优先级,内部资源和外部空间的选择。内部总线,包括内部存储器和外围设备,都受存储器映像控制模块的控制。每一个局部地址空间都可转化成全局地址空间。   3.1.1 专业术语 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,133
精华内容 1,253
关键字:

模块控制结构图