Pytorch线性回归实现(原理)

设置梯度

直接在tensor中设置 requires_grad=True,每次操作这个数的时候,就会保存每一步的数据。也就是保存了梯度相关的数据。

python 复制代码
import torch
x = torch.ones(2, 2, requires_grad=True)  #初始化参数x并设置requires_grad=True用来追踪其计算历史
print(x)
#tensor([[1., 1.],
#        [1., 1.]], requires_grad=True)

y = x+2
print(y)
#tensor([[3., 3.],
#        [3., 3.]], grad_fn=<AddBackward0>)

z = y*y*3  #平方x3
print(x)
#tensor([[27., 27.],
#        [27., 27.]], grad_fn=<MulBackward0>) 

out = z.mean() #求均值
print(out)
#tensor(27., grad_fn=<MeanBackward0>)

图1.1

想要修改的话:x.requires_grad_(True),就把x变为可以追踪(中间计算结果都保存)的数了。

不想修改了

python 复制代码
with torch.no_gard():
    c = (a * a).sum()  #tensor(151.6830),此时c没有gard_fn

把内容放在torch.no_gard():下就可以了

梯度计算

计算梯度 :直接调用**.backward()**就行。

例如上面图1.1,out.backward()就行

获取梯度 :调用那个数**.gard**

注意:如果.grad在循环中,每次都会和之前的.grad叠加。

所以每次反向传播之后,都需要把梯度变为0再进行操作。


使用.data获取里面的数据。相当于直接拷贝了一份数据,而不改变原数据的内容。

相关推荐
河南凹凸环境艺术设计5 小时前
性价比高的民宿酒店设计企业
大数据·人工智能·python
wuyk5558 小时前
Python 第三章:列表 List
服务器·开发语言·python
笨鸟先飞,勤能补拙8 小时前
从预测到决策:人工智能与机器学习的系统方法、工程闭环与现实边界
大数据·人工智能·windows·python·机器学习·密码学
MgArcher8 小时前
抖音a_bogus参数逆向实战:JSVMP环境模拟与Hook技术(2025最新)
javascript·爬虫·python
circuitsosk9 小时前
AI输出的“质检员”:构建智能体质量评估、异常检测与人工兜底的三层防线
人工智能·python·microsoft·正则表达式·langchain
要努力点9 小时前
Python入门第六课
开发语言·python
CTA终结者9 小时前
先用小策略练清条件和动作
人工智能·python
hhzz9 小时前
《深度学习框架PyTorch入门与实践》系列:11-实战猫狗大战之可复用的PyTorch项目架构
人工智能·pytorch·深度学习
Bruce_Liuxiaowei9 小时前
从零到可运行:基于 Vue3 + FastAPI + DeepSeek-V3 的 AI 英语单词学习系统全栈实战
人工智能·python·学习·fastapi·全栈·智能体
ValhallaCoder9 小时前
Leetcode-hot100(2026.08.17)
python·算法·leetcode