MXNet 如何将符号计算和命令式计算结合起来

符号计算

MXNet中的符号计算是用mxnet::symbol来构建一个网络,比如googlenet, 比如inception-bn,比如LSTM,用起来和caffe的网络定义文件一样的。定义好之后就可以用这个模型了。

如果你对caffe 的网络定义结构很熟悉,那么我敢保证你用不了几分钟就可以看懂mxnet的symbol的网络定义方式。


命令式计算

MXNet 中命令计算方式是指用mshadow来做具体的数据计算,比如矩阵操作。

于TF(tensorflow)使用eigen(计算库)来对tensor做计算不同,MXNet 使用mshadow 这个表达式模板来做计算。

表达式模板是c++中一个非常有用的特性,可以让做到以下几点

  1. 避免中间变量的生成
  2. 延迟计算,获取整个计算图之后做优化

表达式模板

我说一下我的理解,这种方式很像是编译原理说的构建一个AST的过程,抽象语法树的过程。有了图之后就可以对递归的求值。


你可能感兴趣的:(MXNet 如何将符号计算和命令式计算结合起来)