模型调用
首先再models/__init__.py中,有以下代码:
from .alexnet import AlexNet
from .resnet34 import ResNet34
from .squeezenet import SqueezeNet
# from torchvision.models import InceptinV3
# from torchvision.models import alexnet as AlexNet
这样主函数在调用时就可以写成:
from models import AlexNetg
#或
import models
model = models.AlexNet()
#或
import models
model = getattr(models,'AlexNet')().eval()
书中比较推荐的是第三种方法,但是比较绕,个人理解如下:
首先是getattr和eval两个函数的理解:
getattr(x,'foobar')等效于x.foobar,实例参考点击这里
model.eval()是评估模式,用于验证集和测试集,表示我们用验证集或测试集进行评估时,不改变dropout和batch normalization的参数。这篇文章说的比较全面
(工程代码中getattr的第二个参数是opt.model,这需要读取配置文件中的model参数,小白还没有具体研究,待研究明白再来这里做下记录。)这样如果再使用别的模型的时候,只需要修改一个字符串就好了,便于后期维护。

最低0.47元/天 解锁文章
28万+

被折叠的 条评论
为什么被折叠?



