美文网首页mxnet
MxNet源码解析(4) executor

MxNet源码解析(4) executor

作者: Junr_0926 | 来源:发表于2018-09-14 17:33 被阅读0次

    1. 前言

    executor在MXnet中扮演着连接各个组件的作用,它根据symbol构建graph,它通过方法forward, backward将操作传递给engine,完成计算,它还负责了很多转换的工作。

    2. executor.h

    该文件定义了executor的接口:

    • Forward:前向计算
    • PartialForward:计算部分前向计算
    • Backward:反向传播
    • outputs:返回输出
    • in_arg_map:输入的字典表示
    • arg_grad_map:梯度的字典表示
    • aux_state_map:状态变量的字典表示
    • Reshape:改变输入,输出的大小
    • Bind:将symbol转换为executor

    3. graph_executor

    GraphExecutorExecutor的子类,是接口的具体实现,用于计算图的执行。

    • Bindbind其实是我们在训练过程中一定会使用到的,只是MXNet的module对它进行了封装,当我们调用Module的bind方法时,就会建立一个DataParallelExecutorGroup,它在初始化的时候会对传递给它的symbol在每个context建立一个模型,来完成多卡的数据并行的训练。在建立的时候,调用的是symbolsimple_bind方法。simple_bind方法完成了很多的处理(源码很长一段),最终返回一个executor。在MXNet中支持了一些变量是多种类型的情况,因此多了很多代码,个人感觉还是固定一种输入形式更加清晰。
    • InitBind调用了 Init方法,该方法完成一个executor的初始化工作,它调用InitGraph来将一个symbol和各种信息例如ctx,stype处理,返回一个graph
    • InitFullGraph:建立一个计算图和它的反向传播图,它调用图的pass:Gradient函数来建立反向传播图。除此之外,还完成反向计算时head的处理。
    • RunOps:计算图中的操作,从topo_starttopo_endforwardbackward调用该方法来完成前向和反向的计算。

    相关文章

      网友评论

        本文标题:MxNet源码解析(4) executor

        本文链接:https://www.haomeiwen.com/subject/dvgugftx.html