pytorch如何使用model.eval()和BN层
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍pytorch如何使用model.eval()和BN层,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!看代码吧~class ConvNet(nn.
千家信息网最后更新 2026年11月02日pytorch如何使用model.eval()和BN层
这篇文章主要介绍pytorch如何使用model.eval()和BN层,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
看代码吧~
class ConvNet(nn.module): def __init__(self, num_class=10): super(ConvNet, self).__init__() self.layer1 = nn.Sequential(nn.Conv2d(1, 16, kernel_size=5, stride=1, padding=2), nn.BatchNorm2d(16), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2)) self.layer2 = nn.Sequential(nn.Conv2d(16, 32, kernel_size=5, stride=1, padding=2), nn.BatchNorm2d(32), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2)) self.fc = nn.Linear(7*7*32, num_classes) def forward(self, x): out = self.layer1(x) out = self.layer2(out) print(out.size()) out = out.reshape(out.size(0), -1) out = self.fc(out) return out# Test the modelmodel.eval() # eval mode (batchnorm uses moving mean/variance instead of mini-batch mean/variance)with torch.no_grad(): correct = 0 total = 0 for images, labels in test_loader: images = images.to(device) labels = labels.to(device) outputs = model(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item()如果网络模型model中含有BN层,则在预测时应当将模式切换为评估模式,即model.eval()。
评估模拟下BN层的均值和方差应该是整个训练集的均值和方差,即 moving mean/variance。
训练模式下BN层的均值和方差为mini-batch的均值和方差,因此应当特别注意。
补充:Pytorch 模型训练模式和eval模型下差别巨大(Pytorch train and eval)附解决方案
当pytorch模型写明是eval()时有时表现的结果相对于train(True)差别非常巨大,这种差别经过逐层查看,主要来源于使用了BN,在eval下,使用的BN是一个固定的running rate,而在train下这个running rate会根据输入发生改变。
解决方案是冻住bn
def freeze_bn(m): if isinstance(m, nn.BatchNorm2d): m.eval()model.apply(freeze_bn)这样可以获得稳定输出的结果。
以上是"pytorch如何使用model.eval()和BN层"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
均值
方差
模型
模式
差别
训练
巨大
内容
方案
篇文章
结果
解决方案
评估
代码
价值
兴趣
小伙
小伙伴
更多
来源
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技网
互联网科技活动banner
互联网科技官网
互联网是不是新科技
互联网巨头科技公司
互联网最新的科技有限公司
中资互联网科技
互联网与新科技
互联网前沿科技
互联网科技公司名称
滨湖区互联网智能科技产品供应
互联网科技生活的内容
贵州叶脉互联网科技有限公司所属行业
厦门千工互联网科技有限公司
玉溪新华互联网科技好不好
朱啸虎曾投资哪些互联网科技企业
山东有哪些互联网科技公司
从那以后互联网科技有限公司
盐城市攀科互联网科技有限公司
六子台科技互联网展会
互联网科技公司发展
九亚互联网科技
互联网金融和金融科技
互联网科技公司做什么
蓝色互联网科技
深圳市运趣互联网科技有限公司
长沙互联网科技
云南省自由互联网科技有限公司
上海万顺科技互联网有限公司招聘
互联网时代高科技布局