pytorch快速搭建卷积神经网络【优化器_第1课_梯度清零_zero_grad】

本文详细介绍了PyTorch中`zero_grad()`函数的用途,该函数用于在每次权重更新前清零梯度。通过示例展示了如何在优化器中使用`zero_grad()`来初始化梯度,确保模型训练过程的正确进行。
摘要由CSDN通过智能技术生成

文章目录


理论

功能:将梯度清零。
由于 PyTorch 不会自动清零梯度,所以在每一次更新前会进行此操作。

案例

# coding: utf-8

import torch
import torch.optim as optim

# ----------------------------------- zero_grad

w1 = torch.randn(2, 2)
w1.requires_grad = True

w2 = torch.randn(2, 2)
w2.requires_grad = True

optimizer = optim.SGD([w1, w2], lr=0.001, momentum=0.9)

# optimizer.param_groups:{'params': [tensor([[0.3673, 0.6950],[0.4002, 0.1766]],requires_grad=True)
# 参数组:optimizer.param_groups 参数组第一个参数:optimizer.param_groups[0] 
# 参数组第一个参数中params键值:optimizer.param_groups[0]['params']
# 参数组第一个参数中params键值对应的第一个元素:optimizer.param_groups[0]['params'][0]
optimizer.param_groups[0]['params'][0].grad = torch.randn(2, 2)

print('参数w1的梯度:')
print(optimizer.param_groups[0]['params'][0].grad, '\n')  # 参数组,第一个参数(w1)的梯度

optimizer.zero_grad()
print('执行zero_grad()之后,参数w1的梯度:')
print(optimizer.param_groups[0]['params'][0].grad)  # 参数组,第一个参数(w1)的梯度

结果

参数w1的梯度:
tensor([[ 0.5045,  0.7872],
        [ 0.4429, -0.2255]]) 

执行zero_grad()之后,参数w1的梯度:
tensor([[0., 0.],
        [0., 0.]])
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【网络星空】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值