为什么在pytorch类中不调用函数(forward)?

0yg35tkg  于 2022-12-18  发布在  其他
关注(0)|答案(1)|浏览(282)

我有以下简单的线性回归示例代码如下。import torch

import numpy as np
from torch.autograd import Variable
class linearRegression(torch.nn.Module):
    def __init__(self, inputSize, outputSize):
        super(linearRegression, self).__init__()
        self.linear = torch.nn.Linear(inputSize, outputSize)

    def forward(self, x):
        out = self.linear(x)
        return out

x = np.array([1], dtype = np.float32).reshape(-1, 1)
x = Variable(torch.from_numpy(x))

model = linearRegression(1, 1)
model(x)

输出是tensor([[0.4512]], grad_fn=<AddmmBackward>)
我的问题是model.foward(x)而不是model(x)是如何输出的,在这段代码中我从来没有调用过forward,但它似乎被调用了。

bsxbgnwa

bsxbgnwa1#

这是因为nn.Module的dunder方法__call__将在内部调用其用户定义的forward方法。

相关问题