# oneflow.nn.Dropout¶

class oneflow.nn.Dropout(p: float = 0.5, inplace: bool = False, generator=None)

During training, randomly zeroes some of the elements of the input tensor with probability p using samples from a Bernoulli distribution. Each channel will be zeroed out independently on every forward call.

This has proven to be an effective technique for regularization and preventing the co-adaptation of neurons as described in the paper “Improving neural networks by preventing co-adaptation of feature detectors”.

Furthermore, the outputs are scaled by a factor of $$\frac{1}{1-p}$$ during training. This means that during evaluation the module simply computes an identity function.

Additionally, we can pass an extra Tensor addend which shape is consistent with input Tensor. The addend Tensor will be add in result after dropout, it is very useful in model’s residual connection structure.

Parameters
• p – probability of an element to be zeroed. Default: 0.5

• inplace – If set to True, will do this operation in-place. Default: False

• generator – A pseudorandom number generator for sampling

Shape:
• Input: $$(*)$$. Input can be of any shape

• Output: $$(*)$$. Output is of the same shape as input

For example:

example 1:

>>> import numpy as np
>>> import oneflow as flow

>>> m = flow.nn.Dropout(p=0)
>>> arr = np.array(
...    [
...        [-0.7797, 0.2264, 0.2458, 0.4163],
...        [0.4299, 0.3626, -0.4892, 0.4141],
...        [-1.4115, 1.2183, -0.5503, 0.6520],
...    ]
... )
>>> x = flow.Tensor(arr)
>>> y = m(x)
>>> y
tensor([[-0.7797,  0.2264,  0.2458,  0.4163],
[ 0.4299,  0.3626, -0.4892,  0.4141],
[-1.4115,  1.2183, -0.5503,  0.6520]], dtype=oneflow.float32)


example 2:

>>> import numpy as np
>>> import oneflow as flow

>>> m = flow.nn.Dropout(p=0)
>>> arr = np.array(
...    [
...        [-0.7797, 0.2264, 0.2458, 0.4163],
...        [0.4299, 0.3626, -0.4892, 0.4141],
...        [-1.4115, 1.2183, -0.5503, 0.6520],
...    ]
... )
>>> x = flow.Tensor(arr)
>>> addend = flow.ones((3, 4), dtype=flow.float32)
>>> y
tensor([[ 0.2203,  1.2264,  1.2458,  1.4163],
[ 1.4299,  1.3626,  0.5108,  1.4141],
[-0.4115,  2.2183,  0.4497,  1.6520]], dtype=oneflow.float32)

__init__(p: float = 0.5, inplace: bool = False, generator=None)

Initialize self. See help(type(self)) for accurate signature.

Methods

 __call__(*args, **kwargs) Call self as a function. __delattr__(name, /) Implement delattr(self, name). __dir__() Default dir() implementation. __eq__(value, /) Return self==value. __format__(format_spec, /) Default object formatter. __ge__(value, /) Return self>=value. __getattr__(name) __getattribute__(name, /) Return getattr(self, name). __gt__(value, /) Return self>value. __hash__() Return hash(self). __init__([p, inplace, generator]) Initialize self. __init_subclass__ This method is called when a class is subclassed. __le__(value, /) Return self<=value. __lt__(value, /) Return self

Attributes

 __annotations__ __constants__