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


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