PyTorch学习(10):训练技巧
- Pytorch官方文档: https://pytorch-cn.readthedocs.io/zh/latest/
- 参考:
https://efficientdl.com/faster-deep-learning-in-pytorch-a-guide/
https://www.reddit.com/r/MachineLearning/comments/n9fti7/d_a_few_helpful_pytorch_tips _examples_included/
https://mp.weixin.qq.com/s/IFAYiGUMUU7oYW-vWs_u1Q
https://mp.weixin.qq.com/s/93f5w0X3ZoAuE5tosYPqIg
文章目录
- PyTorch学习(10):训练技巧
- 1.在DataLoader中使用多个worker和页锁定内存
- 2.考虑使用另一种优化器
- 3.使用. as_tensor() 而不是. tensor()
- 4.在 BatchNorm 之前关闭 bias
- 5. 在验证期间关闭梯度计算
- 6.删除模型时,使用torch.cuda.empty_cache()清除GPU缓存
- 7.预测之前一定记得调用model.eval()
- 总结
1.在DataLoader中使用多个worker和页锁定内存
当使用 torch.utils.data.DataLoader 时,设置 num_workers > 0,而不是默认值 0,同时设置 pin_memory=True,而不是默认值 False。
2.考虑使用另一种优化器
AdamW 是由 fast.ai 推广的一种具有权重衰减(而不是 L2 正则化)的 Adam,在 PyTorch 中以 torch.optim.AdamW 实现。AdamW 似乎在误差和训练时间上都一直优于 Adam。
3.使用. as_tensor() 而不是. tensor()
torch.tensor() 总是会复制数据。如果你要转换一个 numpy 数组,使用 torch.as_tensor() 或 torch.from_numpy() 来避免复制数据。
4.在 BatchNorm 之前关闭 bias
在开始 BatchNormalization 层之前关闭 bias 层。对于一个 2-D 卷积层,可以将 bias 关键字设置为 False:torch.nn.Conv2d(…, bias=False, …)。
5. 在验证期间关闭梯度计算
在验证期间关闭梯度计算,设置:torch.no_grad() 。
6.删除模型时,使用torch.cuda.empty_cache()清除GPU缓存
尤其是在使用笔记本删除并重新创建大型模型时。
7.预测之前一定记得调用model.eval()
如果你忘记调用model.eval(),也就是忘记将模型转变为evaluation(测试)模式,那么Dropout层和Batch Normalization层就会对你的预测数据造成干扰。
总结
综上,仅为PyTorch框架的常用训练技巧。
还有很多相关策略来提升模型训练和预测性能,可访问参考链接,进行详细查明;或者在实践中不断积累,不断百度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)