chainer.functions.dropout¶
-
chainer.functions.dropout(x, ratio=.5, *, mask=None, return_mask=False)[source]¶ Drops elements of input variable randomly.
This function drops input elements randomly with probability
ratioand scales the remaining elements by factor1 / (1 - ratio). In testing mode (i.e.,chainer.config.trainis set toFalse), it does nothing and just returnsx.- Parameters
x (
Variableor N-dimensional array) – Input variable. A \((s_1, s_2, ..., s_N)\) -shaped float array.ratio (float) – Dropout ratio. The
ratiomust be0.0 <= ratio < 1.0.mask (N-dimensional array or None) – The mask to be used for dropout. You do not have to specify this value, unless you need to make results deterministic. If
maskis not specified or set toNone, a mask will be generated randomly according to the givenratio. Ifmaskis specified,ratiowill be ignored. The shape and dtype must be the same asxand should be on the same device. Note that iDeep and cuDNN will not be used for this function if mask is specified, as iDeep and cuDNN do not support it.return_mask (bool) – If
True, the mask used for dropout is returned together with the output variable. The returned mask can later be reused by passing it tomaskargument.
- Returns
When
return_maskisFalse(default), returns the output variable. WhenTrue, returns the tuple of the output variable and mask (N-dimensional array). The mask will be on the same device as the input. The mask will becomeNonewhenchainer.config.trainis set toFalse.- Return type
See the paper by G. Hinton: Improving neural networks by preventing co-adaptation of feature detectors.
Example
>>> x = np.array([[-1, 0], [2, -3], [-2, 1]], np.float32) >>> with chainer.using_config('train', True): ... y = F.dropout(x) >>> y.array array([[-2., 0.], [ 4., -6.], [-0., 2.]], dtype=float32) >>> with chainer.using_config('train', True): ... y = F.dropout(x, ratio=0.0) # dropout returns original input if ratio=0.0 >>> (x == y.array).all() True >>> with chainer.using_config('train', False): ... y = F.dropout(x) # dropout in test mode returns original input >>> (x == y.array).all() True