深入Pytorch中的Tensor,梯度以及权重

前言

我们在使用pytorch搭建模型的时候,一般只关注模型的forward前向传播,backward后向传播过程中,模型梯度的计算以及参数的更新都是pytorch框架后台自动进行计算的,那么有的时候就会思考,pytorch到底是怎么进行计算的,产生的这些梯度以及参数是如何保存的,而我们想要访问又可以怎样来访问。带着这些疑问,我们来一一解开这些神秘的面纱

tensor的grad属性

首先我们从tensor入手,pytorch中创建的张量,也就是tensor,默认情况下是没有grad梯度属性的。检查一个tensor是否有grad属性可以通过tensor.requires_grad来查看,如果tensor中有grad属性,则返回Ture,反之返回False。

那么我们如何在创建tensor的时候就让tensor具有grad属性呢?那就是要在创建tensor的时候将tensor的requires_grad属性设置为True。举个例子:

import torch
import torch.nn as nn

input = torch.tensor([1., 2., 3., 4.,])
print(input.requires_grad)
#False

input = torch.tensor([1., 2., 3., 4.,], requires_grad=True)
print(input.requires_grad)
#True

我们知道pytorch模型在训练过程中都是以tensor的数据结构进行输入输出计算的,那么tensor具有了grad属性是不是就意味着模型在训练的过程中,计算出来的grad都保存在相应的tensor中呢ÿ

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值