zoukankan      html  css  js  c++  java
  • pytorch中的前项计算和反向传播

    前项计算1

    import torch
    
    # (3*(x+2)^2)/4
    #grad_fn 保留计算的过程
    
    x = torch.ones([2,2],requires_grad=True)
    print(x)
    y = x+2
    print(y)
    z = 3*y.pow(2)
    print(z)
    out = z.mean()
    print(out)
    
    #带有反向传播属性的tensor不能直接转化为numpy格式,需要先进性detach操作
    print(x.detach().numpy())
    print(x.numpy())

    Traceback (most recent call last):
    File "C:/Users/liuxinyu/Desktop/pytorch_test/day2/前向计算.py", line 17, in <module>
    print(x.numpy())
    RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead.
    tensor([[1., 1.],
    [1., 1.]], requires_grad=True)
    tensor([[3., 3.],
    [3., 3.]], grad_fn=<AddBackward0>)
    tensor([[27., 27.],
    [27., 27.]], grad_fn=<MulBackward0>)
    tensor(27., grad_fn=<MeanBackward0>)
    [[1. 1.]
    [1. 1.]]

     前向计算2

    import torch
    
    a = torch.randn(2,2)
    a = ((a*3)/(a-1))
    print(a.requires_grad)
    a.requires_grad_(True) #就地修改
    print(a.requires_grad)
    b = (a*a).sum()
    print(b.grad_fn)
    
    with torch.no_grad():
        c = (a*a).sum()
        print(c.requires_grad)

    False
    True
    <SumBackward0 object at 0x000000000249D550>
    False

      反向传播

    import torch
    
    # (3*(x+2)^2)/4
    #grad_fn 保留计算的过程
    
    x = torch.ones([2,2],requires_grad=True)
    print(x)
    y = x+2
    print(y)
    z = 3*y.pow(2)
    print(z)
    out = z.mean()
    print(out)
    out.backward()
    print(x.grad)
    
    tensor([[1., 1.],
            [1., 1.]], requires_grad=True)
    tensor([[3., 3.],
            [3., 3.]], grad_fn=<AddBackward0>)
    tensor([[27., 27.],
            [27., 27.]], grad_fn=<MulBackward0>)
    tensor(27., grad_fn=<MeanBackward0>)
    tensor([[4.5000, 4.5000],
            [4.5000, 4.5000]])
    

      

    多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。
  • 相关阅读:
    自建 IPA 分发平台
    一个优雅的占位图解决方案。适用于 UITableView 和 UICollectionView。
    Vuejs2.0购物车和地址选配学习笔记
    UIWebView 加 MJRefresh 同时解决底部黑影问题
    UIWebView 不自动全屏播放视频
    左右分页按钮的集合视图控件。用于快速编写出集合视图上分页多按钮点击事件!
    课程总结
    IO流实训
    事件处理
    变色
  • 原文地址:https://www.cnblogs.com/LiuXinyu12378/p/12299674.html
Copyright © 2011-2022 走看看