NJU1healer的个人博客分享 http://blog.sciencenet.cn/u/NJU1healer

博文

model.train()与model.eval()的用法

已有 535 次阅读 2020-9-25 10:31 |个人分类:Pytorch|系统分类:科研笔记

1.问题来源

       看别人的面经时,浏览到一题,问的就是这个。自己刚接触pytorch时套用别人的框架,会在训练开始之前写上model.trian(),在测试时写上model.eval()。然后自己写的时候也就保留了这个习惯,没有去想其中原因。

2.用法(区别)

在经过一番查阅之后,总结如下:
       如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model.train(),在测试时添加model.eval()。其中model.train()是保证BN层用每一批数据的均值和方差,而model.eval()是保证BN用全部训练数据的均值和方差;而对于Dropout,model.train()是随机取一部分网络连接来训练更新参数,而model.eval()是利用到了所有网络连接。

       联系Batch Normalization和Dropout的原理之后就不难理解为何要这么做了。

【参考】

https://blog.csdn.net/Qy1997/article/details/106455717

点滴分享,福泽你我!Add oil!



http://blog.sciencenet.cn/blog-3428464-1252019.html

上一篇:PyTorch中permute的用法
下一篇:Pytorch to(device)多GPU并行和查看GPU信息

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-10-29 05:31

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部