Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 试着去理解什么;将“U”保存为“U向后”;在皮托克_Python_Class_Pytorch - Fatal编程技术网

Python 试着去理解什么;将“U”保存为“U向后”;在皮托克

Python 试着去理解什么;将“U”保存为“U向后”;在皮托克,python,class,pytorch,Python,Class,Pytorch,我对Pytorch有一些了解,但我并不真正理解Pytorch中类的机制。 例如,在链接中: 您可以找到以下代码: import torch class MyReLU(torch.autograd.Function): @staticmethod def forward(ctx, input): ctx.save_for_backward(input) return input.clamp(min=0) @staticmethod

我对Pytorch有一些了解,但我并不真正理解Pytorch中类的机制。 例如,在链接中: 您可以找到以下代码:

import torch

class MyReLU(torch.autograd.Function):

    @staticmethod
    def forward(ctx, input):
        ctx.save_for_backward(input)
        return input.clamp(min=0)

    @staticmethod
    def backward(ctx, grad_output):       
        input, = ctx.saved_tensors
        grad_input = grad_output.clone()
        grad_input[input < 0] = 0
        return grad_input
是的。当我在一个具体示例上尝试forward方法时,前一行代码是否存在是无关紧要的:

a=torch.eye(3)
rel=MyReLU()
print(rel.forward(rel,a))
因为我在两种情况下都得到了相同的结果。有人能解释一下发生了什么以及为什么向后添加save\u for\u很有用吗?
提前感谢。

ctx.save\u for\u backward方法用于存储在
forward()
过程中生成的值,这些值将在以后执行
backward()
时需要。保存的值可以在
backward()
期间从
ctx.saved\u tensors
属性访问。

非常感谢您的回答。但是,我还有一个问题:方法save\u for\u backwardward和saved\u tensors是如何链接在一起的?我在Pytorch网站上找不到任何定义这些方法的代码。
a=torch.eye(3)
rel=MyReLU()
print(rel.forward(rel,a))