我正在查看One-Class Neural Network处的代码。
作者创建了一个@staticmethod
:
@staticmethod
def custom_ocnn_loss(self,nu, w, V):
但是稍后在OC_NN
fit
实例方法内部,使用类名对其进行访问并传入self
:
model.compile(loss=OC_NN.custom_ocnn_loss(self,nu, w, V), optimizer=opt,metrics=None)
是否有这样做的理由(即创建@staticmethod
,它以self
作为参数,并使用类名在实例方法内部访问)?
在脚本中,custom_ocnn_loss
函数具有@staticmethod
装饰器,这意味着它不是实例方法,而是静态方法。变量self
的建议可能有所不同,但是在调用custom_ocnn_loss
函数时,会将self
变量传递给它。