繁体   English   中英

如何在 python 中调用没有方法名称的方法

[英]How to call method without method name in python

class LinearRegression(nn.Module):
def __init__(self,input_size,output_size):
    # super function. It inherits from nn.Module and we can access everythink in nn.Module
    super(LinearRegression,self).__init__()
    # Linear function.
    self.linear = nn.Linear(input_dim,output_dim)

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


input_dim = 1
output_dim = 1
model = LinearRegression(input_dim,output_dim)

在这个代码块中,当我想在 model object 中调用 forward 方法时,我可以调用 2 种不同的方式

第一种方式

results = model.forward(car_price_tensor)

第二种方式

results = model(car_price_tensor)

我在不同的 class 和 object 上尝试了第二种方法,但它不起作用。 怎么可能?

这种行为允许您调用 Python object 就像 function 一样,是通过特殊方法__call__启用的,这里有一些解释。

torch.nn.Module是实现此行为的 class。 LinearRegression是它的子类,因此它继承了此行为。 默认情况下, __call__方法是从您的forward实现派生的,但并不相同

这里解释了行为上的差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM