深度学习pytorch学习笔记之自动梯度

这篇笔记介绍了PyTorch中如何利用autograd和Variable进行自动梯度计算,简化深层神经网络的反向传播。通过构建简单的两层神经网络,对比了手动计算梯度和使用自动梯度的区别。此外,还探讨了如何自定义传播函数,通过创建继承自torch.nn.Module的类并重写forward和backward方法来定制前向传播和反向传播过程。
摘要由CSDN通过智能技术生成

上一篇笔记中搭建了一个简单的神经网络模型,前向学习和反向传播都是使用简单的计算,但是随着模型网络的复杂,反向梯度会变得不容易直接计算,因此引入pytorch中的自动梯度降低代码复杂度

1. autograd和variable

torch.autograd包主要功能是完成网络反向传播时的链式求导
过程大致为:先通过输入的tensor数据类型的变量在神经网络的前向传播中生成一张计算图,然后再根据这个计算图和输出结果准确计算出各个参数需要更新的梯度,并通过完成反向传播对参数进行梯度更新。
在实践中使用autograd包中的variable类进行封装,封装之后计算图中每一个节点就是一个variable对象
因此如果用X代表选中的节点,那么X.data 就是tensor数据对象,X.grad就是X的梯度对象,X.grad.data就是X的梯度数据值啦
同样地我们搭建一个简易二层神经网络使用自动梯度方法和上一篇进行对比

import torch
from torch.autograd import Variable
batch_n=100
input_data=1000
hidden_layer=100
output_data=10

x=Variable(torch.randn(batch_n,input_data),requires_grad=False)
y=Variable(torch.randn(hidden_layer,output_data),requires_grad=False)

w1=Variable(torch.randn(input_data,hidden_layer),requires_grad=True)
w2=Variable(torch.randn(hidden_layer,output_data),requires_grad=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值