# Function

Source: https://www.tensorplay.cn/docs/generated/tensorplay.autograd.function.Function.html

# Function

class tensorplay.autograd.function.Function[[source]](../_modules/tensorplay/autograd/function.html#Function)

Records operation history and defines formulas for differentiating ops.

Supports two styles, mirroring torch.autograd.Function:

- Legacy style: forward(ctx, ...) / backward(ctx, ...) (forward receives a context object).

- Combined-forward style: define forward(*args, **kwargs) , setup_context(ctx, inputs, output) and use save_for_backward / save_for_forward inside setup_context instead of receiving a ctx argument in forward .

classmethod apply(*args, **kwargs)[[source]](../_modules/tensorplay/autograd/function.html#Function.apply)

Runs the operation and attaches gradient bookkeeping to outputs.

static backward(ctx, *grad_outputs)[[source]](../_modules/tensorplay/autograd/function.html#Function.backward)

Defines a formula for differentiating the operation.

static forward(ctx, *args, **kwargs)[[source]](../_modules/tensorplay/autograd/function.html#Function.forward)

Performs the operation.

This function is to be overridden by all subclasses. There are two ways
to define forward:

Usage 1 (Combined forward and ctx):

```
@staticmethod
def forward(ctx, input1, input2):
    ...
    return output
```

Usage 2 (Separated forward and ctx):

```
@staticmethod
def forward(input1, input2):
    ...
    return output

@staticmethod
def setup_context(ctx, inputs, output):
    ...
```

static jvp(ctx, *grad_inputs)[[source]](../_modules/tensorplay/autograd/function.html#Function.jvp)

Defines a formula for computing the jacobian-vector product.

Not yet supported by this engine; provided for API parity.

static setup_context(ctx, inputs, output)[[source]](../_modules/tensorplay/autograd/function.html#Function.setup_context)

Sets up the context object (Usage 2 above).

Parameters:

- ctx ( _Context ) – context object to modify in-place

- inputs ([tuple](https://docs.python.org/3/library/stdtypes.html#tuple)) – inputs to [forward()](#tensorplay.autograd.function.Function.forward)

- output ( Any ) – output of [forward()](#tensorplay.autograd.function.Function.forward)

static vmap(info, in_dims, *args)[[source]](../_modules/tensorplay/autograd/function.html#Function.vmap)

Defines a formula for vectorizing the operation.

Not yet supported by this engine; provided for API parity.
