mxnet中Symbol API 总结《-》
Symbol API 这个包主要是用于提供神经网络的图和自动求导, 一个symbol代表具有多个输出的符号表达,它们是经过运算符和神经网络层的复合,或者矩阵运算。一个运算能取多个输入变量,产生不只一个输出变量,并且还有内部的静态变量,
一个变量或者是作为另一个symbol的输出,或者是后面bind value来用的。
比如
a = mx.sym.Variable('a')
b = mx.sym.Variable('b')
c = 2 * a + b
# 前面可当作是抽象运算,下面才传入数据。并指明用的是cpu还是gpu
e = c.bind(mx.cpu(), {'a': mx.nd.array([1,2]), 'b':mx.nd.array([2,3])})
y = e.forward()
这时候输出 y的话是空,需要这样才可以。y[0].asnumpy()
Symbol相当于是符号式编程,需要在feed数据之后才会执行,而ndarray是命令式的。
Symbol class 中基本上有类似于ndarray中的所有运算。
比如常见的:
和常见的