假设我有一个torch.nn.Module的训练模型,并且从现在开始我只需要它来进行评估,那么PyTorch是通过所有层传递数据,还是压缩模型以便它只计算一个等价的函数?如果没有,是否有一种方法可以使计算速度更快,模型在内存方面更轻?我一直在网上寻找类似的问题,并没有找到任何合适的答案。
i1icjdpr1#
在推理过程中应该做两件事:使用model.eval()将模型设置为评估模式,然后使用no_grad()(禁用梯度计算)。这将使代码更快,内存效率更高。实际上这看起来像
model.eval()
no_grad()
model.eval() with torch.no_grad(): #your inference code here
xzabzqsa2#
有许多选项,这取决于您的具体情况。一个选项是转换为TorchScript。另一个选项是对模型执行quantization。第三,您可以执行知识提炼,将知识从现有模型转移到更小的模型中。
2条答案
按热度按时间i1icjdpr1#
在推理过程中应该做两件事:使用
model.eval()
将模型设置为评估模式,然后使用no_grad()
(禁用梯度计算)。这将使代码更快,内存效率更高。实际上这看起来像
xzabzqsa2#
有许多选项,这取决于您的具体情况。
一个选项是转换为TorchScript。
另一个选项是对模型执行quantization。
第三,您可以执行知识提炼,将知识从现有模型转移到更小的模型中。