dropout#
- ivy.dropout(x, prob, /, *, scale=True, dtype=None, training=True, seed=None, noise_shape=None, out=None)[source]#
Randomly setting a fraction of input tensor to zeroes with probability.
prob at each update during training time to prevent possible overfitting. The inputs not set to 0 are scaled up 1 / (1 - prob) by default, so that overall sum is unchanged at training time and inference time.
- Parameters:
x (
Union
[Array
,NativeArray
]) – The input array x to perform dropout on.prob (
float
) – The probability of zeroing out each array element, float between 0 and 1.scale (
bool
, default:True
) – Whether to scale the output by 1/(1-prob). Default isTrue
.dtype (
Optional
[Union
[Dtype
,NativeDtype
]], default:None
) – output array data type. If dtype is None, the output array data type must be inferred from x. Default isNone
.training (
bool
, default:True
) – Turn on dropout if training, turn off otherwise. Default isTrue
.seed (
Optional
[int
], default:None
) – Set a default seed for random number generating (for reproducibility). Default isNone
.noise_shape (
Optional
[Sequence
[int
]], default:None
) – a sequence representing the shape of the binary dropout mask that will be multiplied with the input. A shape dimension set to None means that a different mask value will be applied to each element of the input across that dimension. A dimension set to 1 means the same mask value will be applied to all elements of the input across that dimension.out (
Optional
[Array
], default:None
) – optional output array, for writing the result to. It must have a shape that the inputs broadcast to.
- Return type:
- Returns:
ret – Result array after dropout is performed.
Both the description and the type hints above assumes an array input for simplicity,
but this function is nestable, and therefore also accepts
ivy.Container
instances in place of any of the arguments.
Examples
With
ivy.Array
input:>>> x = ivy.array([[1., 2., 3.], ... [4., 5., 6.], ... [7., 8., 9.], ... [10., 11., 12.]]) >>> y = ivy.dropout(x,0.3) >>> print(y) ivy.array([[ 1.42857146, 2.85714293, 4.28571415], [ 0. , 7.14285755, 8.5714283 ], [10. , 11.4285717 , 0. ], [14.2857151 , 0. , 17.1428566 ]])
>>> x = ivy.array([[1.5, 2.6], ... [4.9, 6.6], ... [7.2, 8.7]]) >>> y = ivy.dropout(x,0.5) >>> print(y) ivy.array([[ 0. , 5.19999981], [ 0. , 0. ], [ 0. , 17.39999962]])
>>> x = ivy.array([[1., 2., 3.], ... [4., 5., 6.], ... [7., 8., 9.], ... [10., 11., 12.]]) >>> y = ivy.dropout(x,0.3,scale=False) >>> print(y) ivy.array([[ 1., 2., 3.], [ 4., 5., 0.], [ 7., 0., 9.], [10., 11., 0.]])
>>> x = ivy.array([[1.5, 2.6], ... [4.9, 6.6], ... [7.2, 8.7]]) >>> y = ivy.dropout(x,0.5,scale=False) >>> print(y) ivy.array([[0., 2.6], [0., 0. ], [0., 8.7]])
With
ivy.Container
input:>>> x = ivy.Container(a=ivy.array([[1., 2., 3.], [4., 5., 6.]]), ... b=ivy.array([7., 8., 9.])) >>> y = ivy.dropout(x,0.3) >>> print(y) { a: ivy.array([[0., 0., 4.28571415], [5.71428585, 7.14285755, 0.]]), b: ivy.array([0., 11.4285717, 12.8571434]) }
>>> x = ivy.Container(a=ivy.array([[1.1, 2.2, 3.3], [11., 22., 33.]]), ... b=ivy.array([[1.245, 0.278, 4.105], [7., 13., 17.]])) >>> y = ivy.dropout(x,0.5) >>> print(y) { a: ivy.array([[0., 4.4000001, 6.5999999], [22., 44., 0.]]), b: ivy.array([[2.49000001, 0.55599999, 8.21000004], [14., 0., 0.]]) }
>>> x = ivy.Container(a=ivy.array([[1., 2., 3.], [4., 5., 6.]]), ... b=ivy.array([7., 8., 9.])) >>> y = ivy.dropout(x,0.3) >>> print(y) { a: ivy.array([[0., 0., 3.], [4., 5., 0.]]), b: ivy.array([0., 8., 9.]) }
>>> x = ivy.Container(a=ivy.array([[1.1, 2.2, 3.3], [11., 22., 33.]]), ... b=ivy.array([[1.245, 0.278, 4.105], [7., 13., 17.]])) >>> y = ivy.dropout(x,0.5) >>> print(y) { a: ivy.array([[0., 2.2, 3.3], [11., 22., 0.]]), b: ivy.array([[1.245, 0.278, 4.105], [7., 0., 0.]]) }
- Array.dropout(self, prob, /, *, scale=True, dtype=None, training=True, seed=None, noise_shape=None, out=None)[source]#
ivy.Array instance method variant of ivy.dropout. This method simply wraps the function, and so the docstring for ivy.dropout also applies to this method with minimal changes.
- Parameters:
self (
Array
) – The input array x to perform dropout on.prob (
float
) – The probability of zeroing out each array element, float between 0 and 1.scale (
bool
, default:True
) – Whether to scale the output by 1/(1-prob), default isTrue
.dtype (
Optional
[Union
[Dtype
,NativeDtype
]], default:None
) – output array data type. If dtype is None, the output array data type must be inferred from x. Default:None
.training (
bool
, default:True
) – Turn on dropout if training, turn off otherwise. Default isTrue
.seed (
Optional
[int
], default:None
) – Set a default seed for random number generating (for reproducibility).Default isNone
.noise_shape (
Optional
[Sequence
[int
]], default:None
) – a sequence representing the shape of the binary dropout mask that will be multiplied with the input.out (
Optional
[Array
], default:None
) – optional output array, for writing the result to. It must have a shape that the inputs broadcast to.
- Return type:
Array
- Returns:
ret – Result array of the output after dropout is performed.
Examples
With
ivy.Array
instances:>>> x = ivy.array([[1., 2., 3.], ... [4., 5., 6.], ... [7., 8., 9.], ... [10., 11., 12.]]) >>> y = x.dropout(0.3) >>> print(y) ivy.array([[ 1.42857146, 2.85714293, 4.28571415], [ 5.71428585, 7.14285755, 8.5714283 ], [ 0. , 11.4285717 , 12.8571434 ], [14.2857151 , 0. , 0. ]])
>>> x = ivy.array([[1., 2., 3.], ... [4., 5., 6.], ... [7., 8., 9.], ... [10., 11., 12.]]) >>> y = x.dropout(0.3, scale=False) >>> print(y) ivy.array([[ 1., 2., 3.], [ 4., 5., 0.], [ 7., 0., 9.], [10., 11., 0.]])
- Container.dropout(self, prob, /, *, scale=True, dtype=None, training=True, seed=None, noise_shape=None, key_chains=None, to_apply=True, prune_unapplied=False, map_sequences=False, out=None)[source]#
ivy.Container instance method variant of ivy.dropout. This method simply wraps the function, and so the docstring for ivy.dropout also applies to this method with minimal changes.
- Parameters:
self (
Container
) – The input container to perform dropout on.prob (
Union
[float
,Container
]) – The probability of zeroing out each array element, float between 0 and 1.scale (
Union
[bool
,Container
], default:True
) – Whether to scale the output by 1/(1-prob), default isTrue
.dtype (
Optional
[Union
[Dtype
,Container
]], default:None
) – output array data type. If dtype is None, the output array data type must be inferred from x. Default:None
.training (
Union
[bool
,Container
], default:True
) – Turn on dropout if training, turn off otherwise. Default isTrue
.seed (
Optional
[Union
[int
,Container
]], default:None
) – Set a default seed for random number generating (for reproducibility). Default isNone
.noise_shape (
Optional
[Union
[Sequence
[int
],Container
]], default:None
) – a sequence representing the shape of the binary dropout mask that will be multiplied with the input.key_chains (
Optional
[Union
[List
[str
],Dict
[str
,str
],Container
]], default:None
) – The key-chains to apply or not apply the method to. Default isNone
.to_apply (
Union
[bool
,Container
], default:True
) – If True, the method will be applied to key_chains, otherwise key_chains will be skipped. Default isTrue
.prune_unapplied (
Union
[bool
,Container
], default:False
) – Whether to prune key_chains for which the function was not applied. Default isFalse
.map_sequences (
Union
[bool
,Container
], default:False
) – Whether to also map method to sequences (lists, tuples). Default isFalse
.out (
Optional
[Container
], default:None
) – optional output array, for writing the result to. It must have a shape that the inputs broadcast to.
- Return type:
Container
- Returns:
ret – Result array of the output after dropout is performed.
Examples
>>> x = ivy.Container(a=ivy.array([[1., 2., 3.], [4., 5., 6.]]), ... b=ivy.array([7., 8., 9.])) >>> y = x.dropout(0.3) >>> print(y) { a: ivy.array([[0., 0., 4.28571415], [5.71428585, 7.14285755, 0.]]), b: ivy.array([0., 11.4285717, 12.8571434]) }