Pytorch深度学习笔记(六)用pytorch实现线性回归

news/2024/10/20 16:04:44/

目录

1.数据准备

2.设计模型

3.构造损失函数和优化器

4.训练周期(前馈—>反馈—>更新)

5. 代码实现


课程推荐:05.用PyTorch实现线性回归_哔哩哔哩_bilibili

线性通常是指变量之间保持等比例的关系,从图形上来看,变量之间的形状为直线,斜率是常数。

当要预测的变量 y 输出集合是无限且连续,我们称之为回归。比如,天气预报预测明天是否下雨,是一个二分类问题;预测明天的降雨量多少,就是一个回归问题。

1.数据准备

在pytorch中,计算图使用mini batch方式绘制,所以x和y是n*1的向量张量。

mini batch详解,如图,线性模型的x,y都是3*1的向量张量。

2.设计模型

model = LinearModel(x_data),用于自定义计算模块,复写forward(),返回预测值

torch.nn.Linear(in_features,out_features,bias=True),in_features,out_features为输入样本和输出样本的数量

 设计模型代码:

import torch# 生成两个3*1的向量张量
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])# 继承torch.nn.Module,定义自己的计算模块
class LinearModel(torch.nn.Module):# 构造函数def __init__(self):# 调用父类构造super(LinearModel, self).__init__()# Linear对象包含两个成员张量weight和bias# 定义输入样本和输出样本的维度self.linear = torch.nn.Linear(1, 1)# 前馈函数def forward(self, x):y_pred = self.linear(x)return y_pred# 实例化自定义模型
model = LinearModel()

3.构造损失函数和优化器

torch.nn.MSELoss(size_average=True, reduce=True),size_average是否要求均值,reduce结果是否要降维

torch.optim.SGD(params, lr=required, momentum=0, dampening=0,weight_decay=0, nesterov=False),params参数,lr学习率

# 实例化损失函数,返回损失值
criterion = torch.nn.MSELoss(size_average=False)
# 实例化优化器,优化权重w
# model.parameters(),取出模型中的参数
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

 不同的优化器:

4.训练周期(前馈—>反馈—>更新)

一轮训练:

①获得预测值
②获得损失值
③梯度归零
④反向传播
⑤更新权重w

for epoch in range(100):# 获得预测值y_pred = model(x_data)# 获得损失值loss = criterion(y_pred, y_data)# 不会产生计算图,因为__str()__print(epoch, loss)# 梯度归零optimizer.zero_grad()# 反向传播loss.backward()# 更新权重woptimizer.step()

5. 代码实现

1~4完整代码:

import torch# 生成两个3*1的向量张量
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])# 继承torch.nn.Module,定义自己的计算模块
class LinearModel(torch.nn.Module):# 构造函数def __init__(self):# 调用父类构造super(LinearModel, self).__init__()# 实例化的Linear对象包含两个成员张量weight和bias# 定义输入样本和输出样本的维度self.linear = torch.nn.Linear(1, 1)# 前馈函数def forward(self, x):# 返回x线性计算后的预测值y_pred = self.linear(x)return y_pred# 实例化自定义模型,返回预测值
model = LinearModel()
# 实例化损失函数,返回损失值
criterion = torch.nn.MSELoss(size_average=False)
# 实例化优化器,优化权重w
# model.parameters(),取出模型中的参数
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)for epoch in range(100):# 获得预测值y_pred = model(x_data)# 获得损失值loss = criterion(y_pred, y_data)# 不会产生计算图,因为__str()__print(epoch, loss)# 梯度归零optimizer.zero_grad()# 反向传播loss.backward()# 更新权重woptimizer.step()# 打印权重和偏值
print('w = ', model.linear.weight.item())
print('b = ', model.linear.bias.item())
x_test = torch.Tensor([[4.0]])
# 测试模型
y_test = model(x_test)
print('y_pred = ', y_test.data)


http://www.ppmy.cn/news/48376.html

相关文章

百度地图开发者账号申请

本篇文章要完成的效果 一、百度地图开发者账号申请 官网 : 百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com) 没有的话注册一下 一般来说使用过百度云 就有百度账号 点击【控制台】——【我是个人爱好者/学生】 完善个人信息 —— 实名认证 再次返回首…

V2G模式下含分布式能源网优化运行研究(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥 🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 …

MATLAB算法实战应用案例精讲-【智能优化算法】哈里斯鹰(HHO)(附matlab代码实现)

目录 前言 算法原理 算法思想 1. 探索阶段 2.探索到开发的转换 3.开发阶段

OpenCV 图像处理学习手册:6~7

原文:Learning Image Processing with OpenCV 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,…

[RoarCTF 2019]Easy Calc、攻防世界 ics07、[极客大挑战 2019]EasySQL

[RoarCTF 2019]Easy Calc 进入题目是一个计算器的功能 检查网页源码发现这样一个重要信息 这题有WAF计算功能是通过calc.php这里面的代码执行的&#xff0c;我们去访问一下得到源码 <?php error_reporting(0); if(!isset($_GET[num])){show_source(__FILE__); }else{$str…

10个C++客户端开发的高频面试题,你会几个?

当准备参加C客户端开发面试时&#xff0c;了解常见的面试问题是至关重要的。 本文将介绍一些常见的C客户端开发面试问题及其答案&#xff0c;并提供一些有用的技巧和建议。 1. 智能指针 智能指针是C中一种特殊的指针类型。它允许在程序运行时自动管理资源&#xff0c;避免内存…

PyTorch深度学习实战 | 基于线性回归、决策树和SVM进行鸢尾花分类

鸢尾花数据集是机器学习领域非常经典的一个分类任务数据集。它的英文名称为Iris Data Set&#xff0c;使用sklearn库可以直接下载并导入该数据集。数据集总共包含150行数据&#xff0c;每一行数据由4个特征值及一个标签组成。标签为三种不同类别的鸢尾花&#xff0c;分别为&…

【硬件外设使用】——DAC

【硬件外设使用】——DAC DAC基本概念DAC使用方法pyb.dacmachine.dac DAC可用的传感器 DAC基本概念 DAC是数字模拟转换器&#xff08;Digital to Analog Converter&#xff09;&#xff08;的缩写&#xff0c;是一种将数字信号转换为模拟信号的电路。 它的作用是将数字信息转换…