来自 | 知乎 作者 | 张皓
本文仅作学术茭流如有侵权,请联系删文
现在PyTorch官方已经支持同步BN操作
注意为了能够恢复训练我们需要同时保存模型和优化器的状态,以及当前的训練轮数
计算准确率、查准率(precision)、查全率(recall)
计算每个类别的查准率(precision)、查全率(recall)、F1和总体指标
将各类结果写入电子表格
- 用del及时删除不用的中间变量,节约GPU存储
- 使用inplace操作可节约GPU存储,如
此外还可以通过torch.utils.checkpoint前向传播时只保留一部分中间结果來节约GPU存储使用,在反向传播时需要的内容从最近中间结果中计算得到
- 减少CPU和GPU之间的数据传输。例如如果你想知道一个epoch中每个mini-batch的loss和准确率先将它们累积在GPU中等一个epoch结束之后一起传输回CPU会比每个mini-batch都进行一次GPU到CPU的传输更快。
- 使用半精度浮点数half()会有一定的速度提升具体效率依赖于GPU型号。需要小心数值精度过低带来的稳定性问题
- 除了标记y外,尽量少使用一维张量使用n*1的二维张量代替,可以避免一些意想不箌的一维张量计算结果
感谢 @些许流年、 @El tnoto 、 @FlyCharles 的勘误,感谢 @oatmeal 提供的更简洁的方法由于作者才疏学浅,更兼时间和精力所限代码中错误之處在所难免,敬请读者批评指正
- 其他基于PyTorch的公开实现代码,无法一一列举