python刚入门,在看各种类的时候发现了个问题
比如我在看别人写到EfficientNet模型中,建立一个EfficientNet类,但是调用的时候好像只用到它的初始化函数,里面写了前向传播,但我在别人提交到github里面的代码并没有调用这些函数,而是直接调这个类,对此感到很疑惑?(因为老师给我们讲的时候都要进行前向传播啥啥的,后来学tensorflow的时候也是直接调用各种层,这几天学pytorch发现这种困惑)
还有好多调用个backbone网络也只是这样,难道像这样,调用的不仅仅是初始化么(EfficientDetBackbone类里面还有前向传播啊各种各样定义的函数在train里面也没有被用到)
model = EfficientDetBackbone(num_classes=len(params.obj_list), compound_coef=opt.compound_coef,
ratios=eval(params.anchors_ratios), scales=eval(params.anchors_scales))
希望大佬解答
那些函数好多都是用于内部作用的。比如,根据你的初始化传入参数将模型进行预处理。大量的函数在初始化的时候由self.init()进行调用了。只是在你的层面你好像从没用过它们。其实它们都已经在初始化的时候运行了。