pytorch中forwod函数在父类中的调用方式
问题背景
最近在研究Detetron2的代码结构时,发现有些网络代码里面没有forward函数,却照样可以推理,深入挖掘之后,发现其将forword函数都写在了同一个父类里面。这就牵涉到了下面这个问题,子类中没有forward函数,只有父类中有forward函数,这样能不能正常调用网络。
import torch.nn as nn
class Network1(nn.Module):
def __init__(self):
super().__init__()
def forward(self,x):
return x
class Network2(Network1):
def __init__(self):
super().__init__()
data = [1,2,3]
model = Network2().eval()
output = model(data)
print(output)
输出结果如下:
[1,2,3]
可以看出,是没有问题的,子类会将父类的forward函数继承过来。但是,如果子类和父类中都写了forward函数,按理来说,这就是forward方法的重写了,父类中的forward方法会失去作用。