Function

class Function[源代码]

定义一段具有自定义求导规则的计算

计算在 forward 方法中定义,求导规则在 backward 方法中定义

每个 Function 的实例仅应在前向计算中使用一次

实际案例

class Sigmoid(Function):
    def forward(self, x):
        y = 1 / (1 + F.exp(-x))
        self.y = y
        return y

    def backward(self, dy):
        y = self.y
backward(*output_grads)[源代码]

计算前向函数的梯度。此方法需要被所有派生类重写。

参数

output_gradsforward 的输出的梯度。

注解

  • 如果一些输出 Tensor 不影响 loss 函数,那么 output_grads 中的对应值会是 None

  • 此方法应该返回一个包含所有输入的梯度的元组,其顺序应该和 forwardinputs 参数一致。如果只有一个输入,那么返回值也可以是单个 Tensor。如果用户希望组织某些梯度的传播,相应的返回值可以被设为 None

forward(*args, **kwargs)[源代码]

inputs 应用操作并返回结果。此方法应该被所有派生类重写。

参数

input – 输入张量。

返回

一个 Tensor 的元组或者单个 Tensor

注解

  • 此方法应该返回一个 Tensor 的元组或者单个 Tensor,表示函数的输出。

  • 位置参数都应该是张量