【Pytorch Tutorial】 两个标志:requires_grad 和 volatile

所有的Variable都有requires_grad 和 volatile这两个标志。

1. requires_grad

requires_grad = True,则说明需要求梯度;= False,则不需要求梯度。

利用requires_grad可以节省计算资源,提高效率,比如:当我们只优化新的fc层,那么只需要新的fc的梯度,中间层(fc之前的层)则不需要求梯度,那么就可以将中间层的requires_grad设置为False,系统将不会求中间层的梯度,节省了资源和时间,即“排除子图”。

【Pytorch Tutorial】 两个标志:requires_grad 和 volatile

 

2. volatile

volatile = True,则requires_grad = False;Vice Versa。

volatile应用于inference更合适,不会有缓存,占用资源最小。

注意:如果a是requires_grad=True,b是requires_grad=False,则c=a+b是requires_grad=True;同样的道理应用于volatile。