在PyTorch中调用forward方法与调用模型实例

2024-04-16 23:51:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我看过的很多PyTorch教程都是这样做的

定义模型:

class Network(nn.Module):
    def __init__():
        super().__init__()
        self.conv1 = ..
        ... 
    
    def forward(x)
        ...
    ...

一旦网络被实例化(net = Network()),教程中的人就会编写net(input_data),而不是net.forward(input_data)。 我尝试了net.forward(),它给出了与net()相同的结果

为什么这是一种常见的做法,为什么这会起作用


Tags: 模型inputdatanet定义initdef教程
1条回答
网友
1楼 · 发布于 2024-04-16 23:51:10

您应该避免调用Module.forward。 不同之处在于,所有的钩子都是在__call__函数see this中调度的,因此如果调用.forward并且模型中有钩子,钩子将不会产生任何效果

在短时间内调用Module.forward时,pytorch钩子不会有任何效果

详细答案可在this帖子中找到

相关问题 更多 >