zoukankan      html  css  js  c++  java
  • 3、自动微分(求导、梯度)

    x经过某些运算得到1个y,那么就出现了dy/dx,以及x→y的映射(y是如何由x运算得到的)。

    dy/dx的获得需两步:y.backward() 、x.grad,即反向传播、求出梯度

    x→y的映射,是Tensor对象的一个属性grad_fn:y.grad_fn

    注意,反向传播会累加梯度,所以反向传播之前应该梯度清零

    x=t.ones(2,2,requires_grad=True) #跟踪在x上的所有运算操作
    y=x.sum() # 4. 注意y只有1个标量
    y.grad_fn #y是由什么运算得到的,SumBackward0 at 0x2598370d948
    #y对x微分,即梯度dy/dx
    y.backward() #反向传播
    print(x.grad) #输出梯度
    #反向传播会累加梯度,所以反向传播之前应该梯度清零
    y.backward() 
    print(x.grad) #输出梯度
    y.backward() 
    print(x.grad) #输出梯度
    #梯度清零
    x.grad.zero_()
    y.backward() #反传
    print(x.grad) #输出梯度

     

  • 相关阅读:
    BeanUtils在web项目中的应用
    BeanUtils的日期问题
    使用BeanUtils组件
    调用数据库过程函数mysql
    sql注入
    如何取SO中的特性
    Read config detail from SO
    Parts-Ufida ERP project 1
    常用医疗英语
    April 24th 2020
  • 原文地址:https://www.cnblogs.com/xixixing/p/12626875.html
Copyright © 2011-2022 走看看