明确指定父类而不使用它,到底有什么用?
我正在尝试在TensorFlow中实现Huber损失。我找到了一个实现,你可以在这里查看图片这里。
我们可以清楚地看到,我们并没有从超类(Loss模块)中继承任何东西。那么,将Loss设置为父类并声明super.init语句有什么用呢?
回答:
Loss是一个抽象类,继承它意味着你必须重写call方法,否则会抛出错误。你已经在HuberLoss函数中重写了init的参数,但仍然需要调用super.init,因为TensorFlow内部可能使用的一些函数,如“_get_reduction”,是在Loss类中实现的,这些变量需要通过super.init()进行初始化。你可以在这里查看实现这里