背景
使用pytorch在模型做推断时,使用torch.no_grad()与.forward()都可以得到正确的预测结果,如下:
我好奇想知道这两种推断方式那种,那种效率更高,于是随手做个测试。
测试
输入一张图片,然后推断10000次,看下两种方式各用多少时间:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2bac13ce3def709b832f68ca25740532.png)
-
torch.no_grad():
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f3416d7ae12a0bd5b0416469bf5053d6.png)
-
.forward:
![forward](https://i-blog.csdnimg.cn/blog_migrate/a449a869bcda35b490c8c066fdce85f9.png)
结论
我原本以为这两种方式推断效率应该是差不多的,但测试结果告诉我,使用torch.no_grad()这种方式要比.forward()这种方式效率高不少,而且处理任务越多,性能的差距越大,也难怪官方是也是鼓励使用torch.no_grad()这种方式来进行推断预测。