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


Python mxnet.gluon.HybridBlock用法及代码示例


用法:

class mxnet.gluon.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)))

属性

name

这个 Block 的名称,最后没有 ‘_’。

params

返回此 Block 的参数字典(不包括其子参数)。

prefix

Block 的前缀。

HybridBlock 中的前向计算必须是静态的才能与 Symbol 一起使用,即您不能在张量上调用 NDArray.asnumpy()NDArray.shapeNDArray.dtypeNDArray 索引(x[i])等。此外,您不能使用基于非常量表达式(如随机数或中间结果)的分支或循环逻辑,因为它们会更改每次迭代的图形结构。

在使用 hybridize() 激活之前, HybridBlock 就像正常的 Block 一样工作。激活后, HybridBlock 将创建一个表示正向计算的符号图并将其缓存。在后续转发中,将使用缓存图而不是 hybrid_forward()

详细教程请参阅引用。

参考

混合 - 更快的训练和轻松的部署

相关用法


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