2021
06-23
06-23
聊聊PyTorch中eval和no_grad的关系
首先这两者有着本质上区别model.eval()是用来告知model内的各个layer采取eval模式工作。这个操作主要是应对诸如dropout和batchnorm这些在训练模式下需要采取不同操作的特殊layer。训练和测试的时候都可以开启。torch.no_grad()则是告知自动求导引擎不要进行求导操作。这个操作的意义在于加速计算、节约内存。但是由于没有gradient,也就没有办法进行backward。所以只能在测试的时候开启。所以在evaluate的时候,需要同时使用两者。...
继续阅读 >