Pytorch线性回归实现(Pycharm实现)

步骤都在注释里写清楚了,可以自己调整循环的次数观察输出的w与b和loss的值

python 复制代码
import torch

#学习率,用来进行w和b的更新
learning_rate = 0.01
#1. 准备数据
#这里使用y=3x+0.8.也就是w=3,b=0.8.创造一个500行1列的数据
x=torch.rand([500,1])
y_true=x*0.3+0.8

#2. 通过模型计算y_predict。x*w,所以w是1行1列的.torch.matmul是矩阵乘法.只有浮点数才能使用grad。修改dtype
w = torch.rand([1,1],requires_grad=True)
b = torch.tensor(0,requires_grad=True,dtype=torch.float32)


#4. 通过循环,反向传播,更新参数
for i in range(5000):
    y_predict = torch.matmul(x, w) + b
    # 3. 计算loss.用平方来处理,这里mean不太清楚是什么意思。均方误差?这是什么?....每次都需要更新损失,所以把他放在循环里
    loss = (y_true - y_predict).pow(2).mean()

    #每次backward之前梯度置为0
    if w.grad is not None:
        w.grad.data.zero_()
    if b.grad is not None:
        b.grad.data.zero_()

    loss.backward() #反向传播.这时w和b的梯度就算出来了w.grad,b.grad
    w.data = w.data - learning_rate * w.grad
    b.data = b.data - learning_rate * b.grad  #要注意左边不要写成grad,写成grad之后b的内容就一直是0
    print("w,b,loss",w.item(),b.item(),loss.item())

输出:

可以观察到w接近0.3,b接近0.8。和预想值十分接近了。

问题:

这里的理解有欠缺。。。

相关推荐
赵广陆9 小时前
Jupyter和PyCharm完整集成
ide·jupyter·pycharm
想会飞的蒲公英9 小时前
PyTorch 学习率实战:从零理解衰减策略与调度器
人工智能·pytorch·python·深度学习·机器学习
hhzz10 小时前
《深度学习框架PyTorch入门与实践》系列:01-PyTorch入门与环境搭建之从安装到第一个神经网络
人工智能·pytorch·神经网络
从零开始学习人工智能11 小时前
PyTorch 踩坑:Input type \(Half\) and bias type \(float\) 类型不匹配终极解决方案
人工智能·pytorch·python
盼小辉丶14 小时前
PyTorch计算机视觉(5)——生成对抗网络(Generative Adversarial Network,GAN)
pytorch·生成对抗网络·计算机视觉
一碗白开水一1 天前
入门实践工程四:基于 PyTorch 的手写数字识别(MNIST 图像分类)|附:环境依赖环境及工程源码
人工智能·pytorch·分类
雪的季节1 天前
不安装YOLO只安装 PyTorch,加载已有yolo数据,从无到有创建模型训练数据并加载使用(重要)
人工智能·pytorch·yolo
一次旅行1 天前
DPO/KTO/ORPO深度对比:三大LLM偏好对齐数学推导+完整PyTorch实现+落地选型指南
人工智能·pytorch·python
淼澄研学1 天前
PyTorch核心实操:从张量计算到混合精度训练的5个关键步骤
人工智能·pytorch·python
淼澄研学2 天前
PyTorch 2.0 核心机制解析与5个实操方法
人工智能·pytorch·python