Table of Contents
Shortcuts

# torch.autograd.function.FunctionCtx.mark_dirty

FunctionCtx.mark_dirty(*args)

  Marks given tensors as modified in an in-place operation.

  This should be called at most once, only from inside the `forward()` method, and all arguments should be inputs.

  Every tensor that’s been modified in-place in a call to `forward()` should be given to this function, to ensure correctness of our checks. It doesn’t matter whether the function is called before or after modification.

  Examples::

        >>> class Inplace(Function):
        >>>     @staticmethod
        >>>     def forward(ctx, x):
        >>>         x_npy = x.numpy() # x_npy shares storage with x
        >>>         x_npy += 1
        >>>         ctx.mark_dirty(x)
        >>>         return x
        >>>
        >>>     @staticmethod
        >>>     @once_differentiable
        >>>     def backward(ctx, grad_output):
        >>>         return grad_output
        >>>
        >>> a = torch.tensor(1., requires_grad=True, dtype=torch.double).clone()
        >>> b = a * a
        >>> Inplace.apply(a)  # This would lead to wrong gradients!
        >>>                   # but the engine would not know unless we mark_dirty
        >>> b.backward() # RuntimeError: one of the variables needed for gradient
        >>>              # computation has been modified by an inplace operation

## Docs

Access comprehensive developer documentation for PyTorch

View Docs

## Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

## Resources

Find development resources and get your questions answered

View Resources

To analyze traffic and optimize your experience, we serve cookies on this site. By clicking or navigating, you agree to allow our usage of cookies. As the current maintainers of this site, Facebook’s Cookies Policy applies. Learn more, including about available controls: Cookies Policy.