stop_gradient#
- ivy.stop_gradient(x, /, *, preserve_type=True, out=None)[source]#
Stop gradient computation.
- Parameters:
x (
Union
[Array
,NativeArray
]) – Array for which to stop the gradient.preserve_type (
bool
, default:True
) – Whether to preserve gradient computation on ivy.Array instances. Default is True.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 – The same array x, but with no gradient information.
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
inputs:>>> x = ivy.array([1., 2., 3.]) >>> y = ivy.stop_gradient(x, preserve_type=True) >>> print(y) ivy.array([1., 2., 3.])
>>> x = ivy.zeros((2, 3)) >>> ivy.stop_gradient(x, preserve_type=False, out=x) >>> print(x) ivy.array([[0., 0., 0.], [0., 0., 0.]])
With one
ivy.Container
inputs:>>> x = ivy.Container(a=ivy.array([0., 1., 2.]), ... b=ivy.array([3., 4., 5.])) >>> y = ivy.stop_gradient(x, preserve_type=False) >>> print(y) { a: ivy.array([0., 1., 2.]), b: ivy.array([3., 4., 5.]) }
With multiple
ivy.Container
inputs:>>> x = ivy.Container(a=ivy.array([0., 1., 2.]), ... b=ivy.array([3., 4., 5.])) >>> ivy.stop_gradient(x, preserve_type=True, out=x) >>> print(x) { a: ivy.array([0., 1., 2.]), b: ivy.array([3., 4., 5.]) }
- Array.stop_gradient(self, /, *, preserve_type=True, out=None)[source]#
ivy.Array instance method variant of ivy.stop_gradient. This method simply wraps the function, and so the docstring for ivy.stop_gradient also applies to this method with minimal changes.
- Parameters:
self (
Array
) – Array for which to stop the gradient.preserve_type (
bool
, default:True
) – Whether to preserve gradient computation on ivy.Array instances. Default is True.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 – The same array x, but with no gradient information.
Examples
>>> x = ivy.array([1., 2., 3.]) >>> y = x.stop_gradient(preserve_type=True) >>> print(y) ivy.array([1., 2., 3.])
- Container.stop_gradient(self, /, *, key_chains=None, to_apply=True, prune_unapplied=False, map_sequences=False, preserve_type=True, out=None)[source]#
ivy.Container instance method variant of ivy.stop_gradient. This method simply wraps the function, and so the docstring for ivy.stop_gradient also applies to this method with minimal changes.
- Parameters:
self (
Container
) – Container for which to stop the gradient.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
.preserve_type (
Union
[bool
,Container
], default:True
) – Whether to preserve gradient computation on ivy.Array instances. Default is True.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 – The same array x, but with no gradient information.
Examples
With one
ivy.Container
inputs:>>> x = ivy.Container(a=ivy.array([0., 1., 2.]), ... b=ivy.array([3., 4., 5.])) >>> y = x.stop_gradient(preserve_type=False) >>> print(y) { a: ivy.array([0., 1., 2.]), b: ivy.array([3., 4., 5.]) }
With multiple
ivy.Container
inputs:>>> x = ivy.Container(a=ivy.array([0., 1., 2.]), ... b=ivy.array([3., 4., 5.])) >>> x.stop_gradient(preserve_type=True, out=x) >>> print(x) { a: ivy.array([0., 1., 2.]), b: ivy.array([3., 4., 5.]) }