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


Python mxnet.gluon.nn.HybridBlock用法及代碼示例


用法:

class mxnet.gluon.nn.HybridBlock(prefix=None, params=None)

基礎:mxnet.gluon.block.Block

HybridBlock 支持使用 Symbol 和 NDArray 進行轉發。

HybridBlock 類似於 Block ,但有一些區別:

import mxnet as mx
from mxnet.gluon import HybridBlock, nn

class Model(HybridBlock):
    def __init__(self, **kwargs):
        super(Model, self).__init__(**kwargs)
        # use name_scope to give child Blocks appropriate names.
        with self.name_scope():
            self.dense0 = nn.Dense(20)
            self.dense1 = nn.Dense(20)

    def hybrid_forward(self, F, x):
        x = F.relu(self.dense0(x))
        return F.relu(self.dense1(x))

model = Model()
model.initialize(ctx=mx.cpu(0))
model.hybridize()
model(mx.nd.zeros((10, 10), ctx=mx.cpu(0)))

HybridBlock 中的前向計算必須是靜態的才能與 Symbol 一起使用,即您不能在張量上調用 NDArray.asnumpy()NDArray.shapeNDArray.dtypeNDArray 索引(x[i])等。此外,您不能使用基於非常量表達式(如隨機數或中間結果)的分支或循環邏輯,因為它們會更改每次迭代的圖形結構。

在使用 hybridize() 激活之前, HybridBlock 就像正常的 Block 一樣工作。激活後, HybridBlock 將創建一個表示正向計算的符號圖並將其緩存。在後續轉發中,將使用緩存圖而不是 hybrid_forward()

詳細教程請參閱引用。

參考

混合 - 更快的訓練和輕鬆的部署

相關用法


注:本文由純淨天空篩選整理自apache.org大神的英文原創作品 mxnet.gluon.nn.HybridBlock。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。