动手学深度学习(Pytorch版)代码实践 -深度学习基础-02线性回归基础版

02线性回归基础版

主要内容

  1. 数据生成:使用线性模型 ( y = X*w + b ) 加上噪声生成人造数据集。
  2. 数据读取:通过小批量读取数据集来实现批量梯度下降,打乱数据顺序并逐批返回特征和标签。
  3. 模型参数初始化:随机初始化权重和偏置,并设置为可计算梯度。
  4. 模型定义:实现线性回归模型 ( y = X*w + b )。
  5. 损失函数:实现均方误差损失函数。
  6. 优化函数:实现小批量随机梯度下降用于更新模型参数。
  7. 模型训练:设定学习率和迭代次数,通过每个批量计算损失、反向传播和参数更新。
import random
import torch# 生成数据集
def synthetic_data(w, b, num_examples):"""生成 y = Xw + b + 噪声"""# torch.normal: 返回一个从均值为0,标准差为1的正态分布中提取的随机数的张量# 生成形状为(num_examples, len(w))的矩阵X = torch.normal(0, 1, (num_examples, len(w)))# torch.matmul: 矩阵乘法y = torch.matmul(X, w) + b# 添加噪声:torch.normal(0, 0.01, y.shape)y += torch.normal(0, 0.01, y.shape)# reshape: 只改变张量的视图,不改变数据,将y转换为列向量return X, y.reshape((-1, 1))# 定义真实的权重和偏置
true_w = torch.tensor([2, -3.4])
true_b = 4.2
# 生成特征和标签
features, labels = synthetic_data(true_w, true_b, 1000)# 读取数据集
def data_iter(batch_size, features, labels):num_examples = len(features)# 生成一个从0到num_examples-1的整数列表indices = list(range(num_examples))# 将列表的次序打乱random.shuffle(indices)# 每次迭代生成一个小批量数据for i in range(0, num_examples, batch_size):batch_indices = torch.tensor(indices[i:min(i + batch_size, num_examples)])yield features[batch_indices], labels[batch_indices]# 设置批量大小
batch_size = 10# 初始化模型参数 
# 随机初始化权重,设置requires_grad=True以计算梯度
w = torch.normal(0, 0.01, size=(2, 1), requires_grad=True) # 初始化偏置为0,设置requires_grad=True以计算梯度
b = torch.zeros(1, requires_grad=True)  # 定义模型
def linreg(X, w, b):"""线性回归模型"""return torch.matmul(X, w) + b# 定义损失函数
def squared_loss(y_hat, y):"""均方损失函数"""return (y_hat - y.reshape(y_hat.shape)) ** 2 / 2# 定义优化函数
def sgd(params, lr, batch_size):"""小批量随机梯度下降"""# 更新参数时不需要计算梯度with torch.no_grad():for param in params:param -= lr * param.grad / batch_size  # 参数更新param.grad.zero_()  # 梯度清零# 模型训练
lr = 0.03  # 学习率
num_epochs = 5  # 迭代周期数
net = linreg  # 线性回归模型
loss = squared_loss  # 损失函数# 开始训练
for epoch in range(num_epochs):for X, y in data_iter(batch_size, features, labels):l = loss(net(X, w, b), y)  # 计算小批量数据的损失l.sum().backward()  # 计算梯度sgd([w, b], lr, batch_size)  # 更新参数with torch.no_grad():train_l = loss(net(features, w, b), labels)  # 计算整个数据集上的损失print(f'第{epoch + 1}轮,损失: {float(train_l.mean()):f}')# 打印权重和偏置的估计误差
print(f'w的估计误差: {true_w - w.reshape(true_w.shape)}')
print(f'b的估计误差: {true_b - b}')# 示例输出:
# 第1轮,损失: 0.036624
# 第2轮,损失: 0.000131
# 第3轮,损失: 0.000052
# 第4轮,损失: 0.000052
# 第5轮,损失: 0.000052
# w的估计误差: tensor([-0.0003, -0.0008], grad_fn=<SubBackward0>)
# b的估计误差: tensor([0.0007], grad_fn=<RsubBackward1>)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动开发笔记(二) 基于字符设备驱动的GPIO操作

文章目录 前言一、设备驱动的作用与本质1. 驱动的作用2. 有无操作系统的区别 二、内存管理单元MMU三、相关函数1. ioremap( )2. iounmap( )3. class_create( )4. class_destroy( ) 四、GPIO的基本知识1. GPIO的寄存器进行读写操作流程2. 引脚复用2. 定义GPIO寄存器物理地址 五、…

应急通信保障之多链路聚合通信设备在应急救援实施中的解决方案

在当今信息化社会&#xff0c;应急通信保障已成为各类救援任务中不可或缺的一环。尤其在复杂多变的应急救援现场&#xff0c;如何确保通信畅通、信息传递及时&#xff0c;直接关系到救援行动的成败。近年来&#xff0c;多链路聚合通信设备以其独特的优势&#xff0c;逐渐在应急…

Go语言-big.Int

文章目录 Go 语言 big.Int应用场景&#xff1a;大整数位运算使用举例&#xff1a; go sdk中crypto/ecdsa 椭圆曲线生成私钥相关结构中就有使用 Go 语言 big.Int Go 语言 big.Int 参考URL: https://blog.csdn.net/wzygis/article/details/82867793 math/big 作为 Go 语言提供的…

史上最全网络安全面试题+答案

1、什么是SQL注入攻击 前端代码未被解析被代入到数据库导致数据库报错 2、什么是XSS攻击 跨站脚本攻击 在网页中嵌入客户端恶意脚本&#xff0c;常用s语言&#xff0c;也会用其他脚本语言 属于客户端攻击&#xff0c;受害者是用户&#xff0c;网站管理员也属于用户&#xf…

PMI-ACP考试注意事项及应试指南,考前必看!

距离6月1日PMI-ACP敏捷管理考试只有3天时间了&#xff01; 为保证每位考生都能顺利进入考场参加考试&#xff0c;特意为大家摘要出了重要“考试须知”&#xff0c;请各位仔细阅读。 一、PMI-ACP考试材料 参加PMI-ACP考试&#xff0c;必须要带的是&#xff1a; 1、身份证或身…

CentOS 7 64位 常用命令

一、系统管理命令 systemctl start firewalld.service&#xff1a;启动防火墙服务 systemctl stop firewalld.service&#xff1a;停止防火墙服务 systemctl enable firewalld.service&#xff1a;设置防火墙服务开机自启 systemctl disable firewalld.service&#xff1a;禁止…

金融反欺诈指南:车险欺诈为何如此猖獗?

目录 车险欺诈猖獗的原因 车险欺诈的识别难点 多重合作打击车险欺诈 保险企业需要提升反欺诈能力 监管部门需要加强协同合作 青岛市人民检察院在其官方微信公众号上发布的梁某保险诈骗案显示&#xff0c;2020 年以来&#xff0c;某汽修厂负责人梁某、某汽车服务公司负责人孙某&…

地理信息系统(GIS)软件的最新进展

在数字化转型的浪潮中&#xff0c;地理信息系统&#xff08;GIS&#xff09;作为连接现实与数字世界的桥梁&#xff0c;其软件和技术的每一次迭代升级都在推动着空间信息处理和分析能力的飞跃。作为地理信息与遥感领域的探索者&#xff0c;本文将带您深入了解GIS软件的最新进展…

大数据报告有什么作用?查询方式一般有几种?

随着互联网金融的飞速发展&#xff0c;网络借贷已经成为了一种常见的融资方式。然而&#xff0c;如何在众多的平台中做出正确的选择&#xff0c;避免风险并实现最大利益&#xff0c;这就需要一份具有参考价值的大数据报告。本文将详细阐述大数据报告的作用及查询方式的几种方式…

gulp入门9:symlink

在Gulp中&#xff0c;symlink() 是一个用于创建文件系统上符号链接&#xff08;symlinks&#xff09;的流&#xff08;stream&#xff09;的函数。以下是对 gulp.symlink() 的深入研究&#xff0c;包括其用法、参数、返回值以及一些相关的注意事项。 1. 用法 symlink() 函数的…

FreeRTOS【9】计数信号量使用

1.开发背景 FreeRTOS 基于上一篇了解了二值信号量后&#xff0c;如果需要设计需要累计信号量的次数就不行了&#xff0c;所以有了计数信号量&#xff0c;可以设置计数的最大值。同样&#xff0c;可以理解二值信号量是计数信号量的一种特例&#xff0c;即二值信号量是计数信号量…

【NumPy】全面解析flatten函数:简化数组变平操作

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

企业为何广泛应用数据可视化?解析其背后原因

数据可视化为何能在企业当中广泛应用&#xff1f;这是一个值得探讨的话题。在当今信息爆炸的时代&#xff0c;企业每天都会产生和处理大量的数据&#xff0c;这些数据蕴含着丰富的信息和潜在的商业价值。然而&#xff0c;面对海量数据&#xff0c;如何高效地分析、理解和利用它…

django接入djangorestframework-simplejwt步骤

版本&#xff1a;django 4.2 python: 3.8 安装 pip install djangorestframework-simplejwtuser子应用models.py文件 from django.db import models from django.contrib.auth.models import AbstractUserclass User(AbstractUser):mobile models.CharField(max_length11, u…

const和constexpr进一步思考

前言: 首先如果你对constexpr不了解,还是不太合适. 这篇文章主要还写我自己在用constexpr遇到的一些疑问. const比constexpr更加灵活 普通全局变量: 首先,一般的普通全局变量在程序的运行时进行初始化。具体地说&#xff0c;它们在程序进入main函数之前的启动阶段被初始化。也…

IO系列(九) -什么是零拷贝

一、摘要 相信不少的网友&#xff0c;在很多的博客文章里面&#xff0c;已经见到过零拷贝这个词&#xff0c;会不禁的发出一些疑问&#xff0c;什么是零拷贝&#xff1f; 从字面上我们很容易理解出&#xff0c;零拷贝包含两个意思&#xff1a; 拷贝&#xff1a;就是指数据从…

视频汇聚EasyCVR视频监控平台GA/T 1400协议特点及应用领域解析

GA/T 1400协议&#xff0c;也被称为视图库标准&#xff0c;全称为《公安视频图像信息应用系统》。这一标准在公安系统中具有举足轻重的地位&#xff0c;它详细规定了公安视频图像信息应用系统的设计原则、系统结构、视频图像信息对象、统一标识编码、系统功能、系统性能、接口协…

探索RS与AES加密技术:从经典到现代

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、MD5加密技术&#xff1a;经典中的经典 二、非对称加密&#xff1a;RSA技术的魅力 RSA技…

小型水库水雨情和大坝安全监测解决方案

小型水库水雨情和大坝安全监测解决方案 小型水库作为重要的水资源管理和防洪调蓄设施&#xff0c;在保障农业灌溉、居民饮水及防洪安全方面发挥着不可或缺的作用。然而&#xff0c;由于其规模限制&#xff0c;小型水库往往在水雨情监测和大坝安全评估方面面临资源和技术的双重…