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


Python mxnet.util.set_np用法及代码示例


用法:

mxnet.util.set_np(shape=True, array=True)

参数

  • shape(bool) - 一个布尔值,指示是否应该打开或关闭 NumPy-shape 语义。当此标志设置为True, zero-size 和 zero-dim 形状都是形状推断过程中的有效形状,而不是在传统模式下被视为未知形状。
  • array(bool) - 一个布尔值,指示是否应该打开或关闭 NumPy-array 语义。当此标志设置为True,它使 Gluon 代码流能够使用或生成mxnet.numpy.ndarray`s instead of `mxnet.ndarray.NDArray.例如,一个Block将创建类型的参数mxnet.numpy.ndarray.

同时设置NumPy 形状和数组语义。在激活NumPy 数组语义时,需要保持NumPy 形状语义处于活动状态。不允许在 NumPy 数组语义仍处于活动状态时停用 NumPy 形状语义。强烈建议同时将这两个标志设置为True,以完全启用NumPy-like 行为。请参阅示例部分以获得更好的理解。

例子

>>> import mxnet as mx

在传统模式下创建 zero-dim ndarray 会在形状推断时失败。

>>> mx.nd.ones(shape=())
mxnet.base.MXNetError: Operator _ones inferring shapes failed.
>>> mx.nd.ones(shape=(2, 0, 3))
mxnet.base.MXNetError: Operator _ones inferring shapes failed.

在旧模式下,Gluon 层将创建类型为 mx.nd.NDArray 的参数和输出。

>>> from mxnet.gluon import nn
>>> dense = nn.Dense(2)
>>> dense.initialize()
>>> dense(mx.nd.ones(shape=(3, 2)))
[[0.01983214 0.07832371]
 [0.01983214 0.07832371]
 [0.01983214 0.07832371]]
<NDArray 3x2 @cpu(0)>
>>> [p.data() for p in dense.collect_params().values()]
[
[[0.0068339  0.01299825]
 [0.0301265  0.04819721]]
<NDArray 2x2 @cpu(0)>,
[0. 0.]
<NDArray 2 @cpu(0)>]

shape 标志为 True 时,两个形状推断都成功。

>>> from mxnet import np, npx
>>> npx.set_np()  # this is required to activate NumPy-like behaviors
>>> np.ones(shape=())
array(1.)
>>> np.ones(shape=(2, 0, 3))
array([], shape=(2, 0, 3))

array 标志为 True 时,Gluon 层将创建 mx.np.ndarray 类型的参数和输出。

>>> dense = nn.Dense(2)
>>> dense.initialize()
>>> dense(np.ones(shape=(3, 2)))
array([[0.01983214, 0.07832371],
       [0.01983214, 0.07832371],
       [0.01983214, 0.07832371]])
>>> [p.data() for p in dense.collect_params().values()]
[array([[0.0068339 , 0.01299825],
       [0.0301265 , 0.04819721]]), array([0., 0.])]

相关用法


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