當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。