zoukankan      html  css  js  c++  java
  • 【转载】 pytorch笔记:06)requires_grad和volatile

    原文地址:

    https://blog.csdn.net/jiangpeng59/article/details/80667335

    作者:PJ-Javis
    来源:CSDN

    --------------------------------------------------------------------------------------------------

    requires_grad

    Variable变量的requires_grad的属性默认为False,若一个节点requires_grad被设置为True,那么所有依赖它的节点的requires_grad都为True。

    x=Variable(torch.ones(1))
    w=Variable(torch.ones(1),requires_grad=True)
    y=x*w
    x.requires_grad,w.requires_grad,y.requires_grad
    Out[23]: (False, True, True)

    y依赖于w,w的requires_grad=True,因此y的requires_grad=True (类似or操作)

    volatile

    volatile=True是Variable的另一个重要的标识,它能够将所有依赖它的节点全部设为volatile=True,其优先级比requires_grad=True高。因而volatile=True的节点不会求导,即使requires_grad=True,也不会进行反向传播,对于不需要反向传播的情景(inference,测试推断),该参数可以实现一定速度的提升,并节省一半的显存,因为其不需要保存梯度


     前方高能预警:如果你看完了前面volatile,请及时把它从你的脑海中擦除掉,因为

    UserWarning: volatile was removed (Variable.volatile is always False)

    该属性已经在0.4版本中被移除了,并提示你可以使用with torch.no_grad()代替该功能

    >>> x = torch.tensor([1], requires_grad=True)
    >>> with torch.no_grad():
    ...   y = x * 2
    >>> y.requires_grad
    False
    >>> @torch.no_grad()
    ... def doubler(x):
    ...     return x * 2
    >>> z = doubler(x)
    >>> z.requires_grad
    False

    https://pytorch.org/docs/master/autograd.html#locally-disable-grad

    ------------------------------------------------------------------------------------------

  • 相关阅读:
    质因数分解
    P1939 【模板】矩阵加速(数列)
    UVALive
    Python操作MySQL:pymysql模块
    Mysql数据库基础
    Redis管道和发布订阅
    Redis常用操作
    Redis操作集合,有序集合
    Redis操作list
    Redis操作hash
  • 原文地址:https://www.cnblogs.com/devilmaycry812839668/p/10698509.html
Copyright © 2011-2022 走看看