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


Python mxnet.symbol.Dropout用法及代碼示例

用法:

mxnet.symbol.Dropout(data=None, p=_Null, mode=_Null, axes=_Null, cudnn_off=_Null, name=None, attr=None, out=None, **kwargs)

參數

  • data(Symbol) - 將應用 dropout 的輸入數組。
  • p(float, optional, default=0.5) - 在訓練期間丟失的輸入的一部分。
  • mode({'always', 'training'},optional, default='training') - 是僅在訓練期間打開 dropout 還是同時打開進行推理。
  • axes(Shape(tuple), optional, default=[]) - 變分 dropout 內核的軸。
  • cudnn_off(boolean or None, optional, default=0) - 是否關閉 dropout 運算符中的 cudnn。如果指定了軸,則忽略此選項。
  • name(string, optional.) - 結果符號的名稱。

返回

結果符號。

返回類型

Symbol

對輸入數組應用 dropout 操作。

  • 在訓練期間,輸入的每個元素都以概率 p 設置為零。整個數組由 重新縮放,以保持輸入的預期總和不變。
  • 在測試期間,如果模式為‘training’,則此運算符不會更改輸入。如果模式為‘always’,將應用與訓練期間相同的計算。

例子:

random.seed(998)
input_array = array([[3., 0.5,  -0.5,  2., 7.],
                    [2., -0.4,   7.,  3., 0.2]])
a = symbol.Variable('a')
dropout = symbol.Dropout(a, p = 0.2)
executor = dropout.simple_bind(a = input_array.shape)

## If training
executor.forward(is_train = True, a = input_array)
executor.outputs
[[ 3.75   0.625 -0.     2.5    8.75 ]
 [ 2.5   -0.5    8.75   3.75   0.   ]]

## If testing
executor.forward(is_train = False, a = input_array)
executor.outputs
[[ 3.     0.5   -0.5    2.     7.   ]
 [ 2.    -0.4    7.     3.     0.2  ]]

例子

以 0.2 的概率將 dropout 應用於損壞的輸入為零:

>>> data = Variable('data')
>>> data_dp = Dropout(data=data, p=0.2)
>>> shape = (100, 100)  # take larger shapes to be more statistical stable
>>> x = np.ones(shape)
>>> op = Dropout(p=0.5, name='dp')
>>> # dropout is identity during testing
>>> y = test_utils.simple_forward(op, dp_data=x, is_train=False)
>>> test_utils.almost_equal(x, y)
True
>>> y = test_utils.simple_forward(op, dp_data=x, is_train=True)
>>> # expectation is (approximately) unchanged
>>> np.abs(x.mean() - y.mean()) < 0.1
True
>>> set(np.unique(y)) == set([0, 2])
True

相關用法


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