• pytorch(3)----基本类型Autograd计算图


    pytorch 0.4版本之后,torch.autograd.Variable 和torch.Tensor 进行了整合。

    基本内容

    1、 创建可以自动求导的Tensor,默认为false。requires_grad属性

    2、 Tensor 的连个属性:

          grad: 记录该Tensor对应的梯度

          grad_fn: 指向function 对象,记录了该Tensor的操作

    3、计算图,根节点、叶子节点、中间节点;判断是否是叶子节点(.is_leaf)

    4、计算叶节点梯度,根节点使用 .backward()函数

    代码示例

    1、

    # requires_grad属性,设置为可求导
    a = torch.randn(2,2,requires_grad=True)  #默认为false
    b = torch.randn(2,2)
    
    print(a.requires_grad,b.requires_grad)
    # 使用 .requires_grad_() 将requires_grad 设置为true
    # 等价与 b.requires_grad=True
    b.requires_grad_()
    print(b.requires_grad)

    2、

    #Tensor 的两个属性
    # grad: 记录该Tensor对应的梯度
    # grad_fn: 指向function 对象,记录了该Tensor进行过的操作
    
    print(a)
    print(b)
    c = a+b
    print(c)
    print(c.requires_grad)
    
    print(a.grad_fn)
    print(b.grad_fn)
    print(c.grad_fn)
    
    d = c.detach() #.detach() 获取数据,类似于.data(),但前者更安全,后者不会修改autograd的追踪信息
    print(d)
    print(d.requires_grad)

    3、

    # 计算图
    x = torch.randn(1)
    w = torch.ones(1,requires_grad=True)
    b = torch.ones(1,requires_grad=True)
    
    print(x.is_leaf,w.is_leaf,b.is_leaf)
    
    y = w*x
    z = y+b
    print(y.is_leaf,z.is_leaf)
    print(y.grad_fn,z.grad_fn)
    
    # 对根节点使用 .backward()可以获得 叶子节点的 梯度
    z.backward(retain_graph=True)
    print(w.grad)
    print(b.grad)
  • 相关阅读:
    07-图4 哈利·波特的考试 (25分)
    Windows环境下清除SVN文件
    查看SQL SERVER 2008R2 表大小
    Oauth支持的5类 grant_type 及说明
    SignalR的性能监测
    Loadrunner11安装
    Azure ServiceBus 通信失败问题
    sql server text类型 存储问题
    System.BadImageFormatException
    InputStream只能读取一次的解决办法 C# byte[] 和Stream转换
  • 原文地址:https://www.cnblogs.com/feihu-h/p/12305683.html
Copyright © 2020-2023  润新知