当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python mxnet.symbol.Symbol.bind用法及代码示例


用法:

bind(ctx, args, args_grad=None, grad_req='write', aux_states=None, group2ctx=None, shared_exec=None)

参数

  • ctx(mxnet.context.Context) - 生成的执行程序运行的设备上下文。
  • args(list of NDArray or dict of str to NDArray) -符号的输入参数。
    • 如果输入类型是 NDArray 的列表,则顺序应与 list_arguments() 的顺序相同。
    • 如果输入类型是 str 到 NDArray 的字典,则它将参数名称映射到相应的 NDArray
    • 在任何一种情况下,都必须提供所有参数。
  • args_grad(NDArray 列表或 str 的 dict 到NDArray, 可选的) -指定时,args_grad 提供 NDArrays 以向后保存梯度值的结果。
    • 如果输入类型是 NDArray 的列表,则顺序应与 list_arguments() 的顺序相同。
    • 如果输入类型是 str 到 NDArray 的字典,则它将参数名称映射到相应的 NDArray。
    • 当类型是 str 到 NDArray 的字典时,只需提供所需参数梯度的字典。只会计算指定的参数梯度。
  • grad_req({'write', 'add', 'null'}, or list of str or dict of str to str, optional) -指定我们应该如何将渐变更新为 args_grad
    • 'write' 表示每次将梯度写入指定的 args_grad NDArray
    • 'add' 表示每次将渐变添加到指定的 NDArray。
    • 'null' 表示不采取任何行动,可能不计算梯度。
  • aux_states(列表NDArray, 或 str 的 dict 到NDArray, 可选的) -向符号输入辅助状态,仅当list_auxiliary_states() 的输出不为空时才需要。
    • 如果输入类型是 NDArray 的列表,则顺序应与 list_auxiliary_states() 的顺序相同。
    • 如果输入类型是 str 到 NDArray 的字典,则它将 auxiliary_states 的名称映射到相应的 NDArray
    • 在任何一种情况下,都需要提供所有辅助状态。
  • group2ctx(Dict of string to mx.Context) - 字典映射ctx_group归因于上下文分配。
  • shared_exec(mx.executor.Executor) - 执行者共享内存。这适用于运行时重塑、可变长度序列等。返回的执行程序与shared_exec, 并且不应该与它并行使用。

返回

executor- 生成的执行器

返回类型

mxnet.executor.Executor

将当前符号绑定到执行器并返回它。

我们首先声明计算,然后绑定到要运行的数据。此函数返回一个执行程序,它提供方法forward() 方法进行评估和outputs() 方法来获取所有结果。

示例

>>> a = mx.sym.Variable('a')
>>> b = mx.sym.Variable('b')
>>> c = a + b
<Symbol _plus1>
>>> ex = c.bind(ctx=mx.cpu(), args={'a' : mx.nd.ones([2,3]), 'b' : mx.nd.ones([2,3])})
>>> ex.forward()
[<NDArray 2x3 @cpu(0)>]
>>> ex.outputs[0].asnumpy()
[[ 2.  2.  2.]
[ 2.  2.  2.]]

注意

辅助状态是符号的特殊状态,不对应于参数,没有梯度,但对特定操作仍然有用。辅助状态的常见示例包括 BatchNorm 中的 moving_meanmoving_variance 状态。大多数运算符没有辅助状态,在这些情况下,可以安全地忽略此参数。

可以通过在args_grad 中使用字典来放弃渐变,只指定他们感兴趣的渐变。

相关用法


注:本文由纯净天空筛选整理自apache.org大神的英文原创作品 mxnet.symbol.Symbol.bind。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。