模型调用
首先再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.mo