线性回归pytorch实现笔记

这篇博客详细记录了使用PyTorch实现线性回归的过程,包括从零开始的实现和通过PyTorch框架的实现。作者通过实例展示了如何构建模型、计算损失、更新参数,并最终得到接近真实值的预测结果。
摘要由CSDN通过智能技术生成

本周首先学的是《动手学深度学习(pytorch版)》里面的线性回归的实现,但是有些东西看不懂,所以先在b站上找了两个简单的视频跟着学了一遍。
说是学了一遍,其实就是跟着视频敲了一遍代码。

实例一 【用 Pytorch 实现一个简单的线性回归】

课程来自:
PyTorch 从入门到精通(5)—用 Pytorch 实现一个简单的线性回归

先导入包和模块

import torch
import numpy as np
from tqdm import tqdm

我们给定样本集inputs和实际值targets

inputs = np.array( [[73,67,43],
            		[91,88,64],
            		[87,134,58],
            		[102,43,37],
            		[69,96,70]],dtype='float32')

targets = np.array([[56,70],
           			[81,101],
           			[119,133],
          			[22,37],
          			[103,119]],dtype='float32')

inputs_tensor = torch.from_numpy(inputs)
targets_tensor = torch.from_numpy(targets)

随机生成参数:权重和偏差

w = torch.randn(2, 3, requires_grad=True)
b = torch.randn(2, requires_grad=True)

# print(w)
# print(b)

看一下生成的随机参数

tensor([[-2.2122, 0.4708, -0.9458],
   [ 1.6726, 1.2096, -0.2875]], requires_grad=True)
tensor([-0.1555, -0.4671], requires_grad=True)

建立线性回归的函数

def model(x):
  return x @ w.t() + b

pred = model(inputs_tensor) # 预测结果
# print(pred)

预测结果pred的值为

tensor([[ 116.6629, -163.4659],
   [ 148.9410, -221.4479],
   [ 375.6723, -230.6700],
   [ -30.1504, -168.7918],
   [ 211.2514, -214.7471]], grad_fn=< AddBackward0 >)

显然pred和targets差的很远。

建立损失函数

# metric ()
def mse(pred, ground_truth):
  diff = pred - ground_truth
  return torch.sum(diff*diff) / diff.numel()

loss = mse(pred, targets_tensor) # 损失函数
# print(loss)

求梯度,迭代一次

loss.backward() # 反向传播

# print(w)
# print(w.grad)

w.grad.zero_()
b.grad.zero_()
# print(w.grad)
# print(b.grad)

with torch.no_grad(): # 这里不用求梯度
  w -= w.grad * 1e-5
  b -= b.grad * 1e-5
  w.grad.zero_()
  b.grad.zero_()

# print(w)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值