PyTorch自动梯度计算(注意点)

if params.grad is not None:

           params.grad.zero_()

我们实际的运算往往会涉及到若干个requires-grad为true的张量进行运算,在这种情况下,Pytorch会计算整个计算图上的损失的导数,并把这些结果累加到grad属性中。多次调用backward()会导致梯度的错误累积。如果要防止这个问题发生,我们需要在每次迭代的时候手动的把梯度置为零。

Demo的例子

import torch
t_c=torch.tensor([0.5,14.0,15.0,28.0,11.0,8.0,3.0,-4.0,6.0,13.0,21.0])
t_u=torch.tensor([35.7,55.9,58.2,81.9,56.3,48.9,33.9,21.8,48.4,60.4,68.4])
t_un=0.1*t_u
#定义模型
def model(t_u,w,b):
    return w*t_u+b
#定义损失函数
def loss_fn(t_p,t_c):
    squared_diffs=(t_p-t_c)**2
    return squared_diffs.mean()
#唯一改变
params=torch.tensor([1.0,0.0])
params.requires_grad=True
print(params)
#反向传播
loss= loss_fn(model(t_u,*params),t_c)
print(loss)
#对loss 进行反向传播
loss.backward()
#输出params的梯度看看
params.grad

相关推荐

  1. 使用Pytorch进行梯度下降的计算

    2023-12-18 04:20:03       19 阅读
  2. pytorch梯度更新方法

    2023-12-18 04:20:03       35 阅读
  3. pytorch 梯度更新过程

    2023-12-18 04:20:03       9 阅读
  4. PyTorch 多个网络反向传播时出现梯度计算错误

    2023-12-18 04:20:03       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-18 04:20:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-18 04:20:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-18 04:20:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-18 04:20:03       20 阅读

热门阅读

  1. Python按字母顺序返回字典的键和值

    2023-12-18 04:20:03       44 阅读
  2. nestjs使用redis

    2023-12-18 04:20:03       47 阅读
  3. React 实现列表页和列表详情页功能

    2023-12-18 04:20:03       35 阅读
  4. 跳跃游戏 + 45. 跳跃游戏 II

    2023-12-18 04:20:03       45 阅读
  5. QEMU源码全解析 —— virtio(10)

    2023-12-18 04:20:03       38 阅读
  6. 解决Qt UI界面卡顿的优化方法

    2023-12-18 04:20:03       45 阅读
  7. C++11——lambda

    2023-12-18 04:20:03       38 阅读
  8. 【力扣100】141.环形链表

    2023-12-18 04:20:03       36 阅读
  9. 重启docker容器后,ssh无法访问且浏览器无法访问

    2023-12-18 04:20:03       25 阅读