mat*_*hak 5 python python-3.x pytorch
我正在尝试覆盖两个父类函数train
并eval
在ChildClass
. 在父类中,eval()
基本上调用train()
. 但是,我知道,当我写我的代码如下,eval()
在父类试图调用该函数train()
的ChildClass
-我想eval()
在父类调用train()
父类代替。
我只是想知道是否有任何干净的解决方案来进行更改以ChildClass
允许父类调用父train()
函数?
class ChildClass(nn.Module):
def __init__(self):
super(ChildClass, self).__init__()
def train(self):
super(ChildClass, self).train()
def eval(self):
super(ChildClass, self).eval()
Run Code Online (Sandbox Code Playgroud)
父类位于 Python 包 ( pytorch
) 中,因此不应进行任何更改:
class Module(object):
#...
def train(self, mode=True):
# ...
return self
def eval(self):
return self.train(False)
Run Code Online (Sandbox Code Playgroud)
除了调用父级(至少从您共享的代码中)之外,您重写的方法不执行任何操作。
所以,我认为你想要一个与 train()/eval() 具有相同步骤的方法。我想您不需要重写 train() 或 eval(),而是在子类中添加方法并按照您想要混合它们的顺序调用父 train()/eval() 。
归档时间: |
|
查看次数: |
309 次 |
最近记录: |