Какой способ вызова forward()
родительского метода Module
является наиболее подходящим?Например, если я создаю подкласс модуля nn.Linear
, я могу сделать следующее
class LinearWithOtherStuff(nn.Linear):
def forward(self, x):
y = super(Linear, self).forward(x)
z = do_other_stuff(y)
return z
Однако документы говорят, что не следует вызывать метод forward()
напрямую:
Хотя рецепт для прямого прохода должен быть определен внутри этой функции, следует вместо этого вызывать экземпляр модуля, поскольку первый заботится о запуске зарегистрированных хуков, а второй молча игнорирует их.
, что заставляет меня думать, что super(Linear, self).forward(x)
может привести к неожиданным ошибкам.Это правда или я неправильно понимаю наследование?