前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【深度学习实验】线性模型(三):使用Pytorch实现简单线性模型:搭建、构造损失函数、计算损失值

【深度学习实验】线性模型(三):使用Pytorch实现简单线性模型:搭建、构造损失函数、计算损失值

作者头像
Qomolangma
发布于 2024-07-29 13:56:13
发布于 2024-07-29 13:56:13
25600
代码可运行
举报
文章被收录于专栏:深度学习深度学习
运行总次数:0
代码可运行

一、实验介绍

  • 使用Pytorch实现
    • 线性模型搭建
    • 构造损失函数
    • 计算损失值

二、实验环境

本系列实验使用了PyTorch深度学习框架,相关操作如下:

1. 配置虚拟环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda create -n DL python=3.7 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda activate DL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
conda install matplotlib
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 conda install scikit-learn

2. 库版本介绍

软件包

本实验版本

目前最新版

matplotlib

3.5.3

3.8.0

numpy

1.21.6

1.26.0

python

3.7.16

scikit-learn

0.22.1

1.3.0

torch

1.8.1+cu102

2.0.1

torchaudio

0.8.1

2.0.2

torchvision

0.9.1+cu102

0.15.2

三、实验内容

ChatGPT

线性模型是一种基本的机器学习模型,用于建立输入特征与输出之间的线性关系。它是一种线性组合模型,通过对输入特征进行加权求和,再加上一个偏置项,来预测输出值。 线性模型的一般形式可以表示为:y = w1x1 + w2x2 + ... + wnxn + b,其中y是输出变量,x1, x2, ..., xn是输入特征,w1, w2, ..., wn是特征的权重,b是偏置项。模型的目标是通过调整权重和偏置项,使预测值与真实值之间的差异最小化。 线性模型有几种常见的应用形式:

  1. 线性回归(Linear Regression):用于建立输入特征与连续输出之间的线性关系。它通过最小化预测值与真实值的平方差来拟合最佳的回归直线。
  2. 逻辑回归(Logistic Regression):用于建立输入特征与二分类或多分类输出之间的线性关系。它通过使用逻辑函数(如sigmoid函数)将线性组合的结果映射到概率值,从而进行分类预测。
  3. 支持向量机(Support Vector Machines,SVM):用于二分类和多分类问题。SVM通过找到一个最优的超平面,将不同类别的样本分隔开。它可以使用不同的核函数来处理非线性问题。
  4. 岭回归(Ridge Regression)和Lasso回归(Lasso Regression):用于处理具有多重共线性(multicollinearity)的回归问题。它们通过对权重引入正则化项,可以减小特征的影响,提高模型的泛化能力。

线性模型的优点包括简单、易于解释和计算效率高。它们在许多实际问题中都有广泛的应用。然而,线性模型也有一些限制,例如对非线性关系的建模能力较弱。在处理复杂的问题时,可以通过引入非线性特征转换或使用核函数进行扩展,以提高线性模型的性能。

本系列为实验内容,对理论知识不进行详细阐释

(咳咳,其实是没时间整理,待有缘之时,回来填坑)

0. 导入库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import torch

1. 定义线性模型linear_model

该函数接受输入数据x,使用随机生成的权重w和偏置b,计算输出值output。这里的线性模型的形式为 output = x * w + b

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def linear_model(x):
    w = torch.rand(1, 1, requires_grad=True)
    b = torch.randn(1, requires_grad=True)
    return torch.matmul(x, w) + b

2. 定义损失函数loss_function

这里使用的是均方误差(MSE)作为损失函数,计算预测值与真实值之间的差的平方。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def loss_function(y_true, y_pred):
    loss = (y_pred - y_true) ** 2
    return loss

3. 定义数据

  • 生成一个随机的输入张量 x,形状为 (5, 1),表示有 5 个样本,每个样本的特征维度为 1。
  • 生成一个目标张量 y,形状为 (5, 1),表示对应的真实标签。
  • 打印数据的信息,包括每个样本的输入值x和目标值y
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x = torch.rand(5, 1)
y = torch.tensor([1, -1, 1, -1, 1], dtype=torch.float32).view(-1, 1)
print("The data is as follows:")
for i in range(x.shape[0]):
    print("Item " + str(i), "x:", x[i][0], "y:", y[i])

4. 调用模型

  • 使用 linear_model 函数对输入 x 进行预测,得到预测结果 prediction
  • 使用 loss_function 计算预测结果与真实标签之间的损失,得到损失张量 loss
  • 打印了每个样本的损失值。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
prediction = linear_model(x)
loss = loss_function(y, prediction)
print("The all loss value is:")
for i in range(len(loss)):
    print("Item ", str(i), "Loss:", loss[i])

5. 完整代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import torch

def linear_model(x):
    w = torch.rand(1, 1, requires_grad=True)
    b = torch.randn(1, requires_grad=True)
    return torch.matmul(x, w) + b

def loss_function(y_true, y_pred):
    loss = (y_pred - y_true) ** 2
    return loss

x = torch.rand(5, 1)
y = torch.tensor([1, -1, 1, -1, 1], dtype=torch.float32).view(-1, 1)
print("The data is as follows:")
for i in range(x.shape[0]):
    print("Item " + str(i), "x:", x[i][0], "y:", y[i])

prediction = linear_model(x)
loss = loss_function(y, prediction)
print("The all loss value is:")
for i in range(len(loss)):
    print("Item ", str(i), "Loss:", loss[i])

注意:

本实验的线性模型仅简单地使用随机权重和偏置,计算了模型在训练集上的均方误差损失,没有使用优化算法进行模型参数的更新。

通常情况下会使用梯度下降等优化算法来最小化损失函数,并根据训练数据不断更新模型的参数,具体内容请听下回分解。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
数据分析师薪资有多高?爬了29个城市的数据告诉你答案
想要从事数据分析师这个岗位,那自然首先需要对这个岗位有所了解。最直接、最真实的方式就是从企业那里获得需求讯息,这样才最能够指导自己的学习方向和简历准备。本文即是要利用爬虫爬取拉勾网上数据分析这一岗位的信息,然后进行一些探索和分析,以数据分析来了解‘数据分析’。 数据来源 本项目所使用的数据集全部来自拉勾网,是通过集搜客这一网络爬虫工具来爬取的。之所以选择拉勾网作为本项目的数据源,主要是因为相对于其他招聘网站,拉钩网上的岗位信息非常完整、整洁,极少存在信息的缺漏。并且几乎所有展现出来的信息都是非常规范化的,极
钱塘数据
2018/03/06
3K0
数据分析师薪资有多高?爬了29个城市的数据告诉你答案
数据分析师最不能错过的数据是什么?
作为一名数据分析师最不能错过的数据是什么?当然是和每一位数据分析师息息相关的,决定大家是吃土还是吃面包的招聘数据。
1480
2019/05/21
6310
数据分析师还是算法工程师|用数据多角度解读如何选择
疫情即将散去,又到了求职季。学习Python的各位该如何选择自己的职业方向,算法工程师还是数据分析师?跟随本文一起看看吧!
刘早起
2020/04/22
1.3K0
数据分析师职业发展白皮书(2015版)第一——三部分
数据分析师职业发展白皮书(2015版) 目 录 一、是技术也是艺术——CDA研究院和业界前沿公司和对数据分析的认识 二、数据分析师职业发展历程 1.国外数据分析行业发展历程 2.国内数据分析师职业发展 三、数据分析师人才行业现状 1.人才模型/岗位划分 2.国内数据分析师人才薪资水平 3.国内数据分析师人才分布 4.国内数据分析师人才需求 四、数据分析师人才职业规划 1.目前人才职业现状 2.数据分析人才学习路径 3.总结 五、CDA数据分析师培训及认证 1.考试简介 2.为什么选择CDA
小莹莹
2018/04/20
1.4K0
数据分析师职业发展白皮书(2015版)第一——三部分
如何分析“数据分析师”的岗位?
在《手把手带你抓取智联招聘的“数据分析师”岗位!》一期中我们分享了如何抓取智联招聘中“数据分析师”岗位的数据信息(数据截止到2018年11月4日),在本期我们将基于已有的数据对其作进一步的分析和探索。在探索过程中,我们将围绕如下几个主题进行问题的回答:
1480
2019/08/05
6490
如何分析“数据分析师”的岗位?
数据导入与预处理-第8章-实战演练-数据分析师岗位分析
本案例数据为招聘网站上收集的有关数据分析师岗位的数据,对该数据集从数据分析的角度出发,利用pandas、pyecharts库处理与展现数据,开发一个完整的数据分析项目。
IT从业者张某某
2022/11/12
1.2K0
数据导入与预处理-第8章-实战演练-数据分析师岗位分析
用数据分析告诉你数据分析师能挣多少钱
随着大数据时代的到来和数据的市场价值得到认可,数据分析师、进阶一点的还有数据挖掘工程师、甚至是金字塔顶尖的数据科学家,这些作为21世纪最性感的职业已成功吸引无数像笔者这样的热血小青年,阿里的一句“开启AI时代”的口号就足以让我等激动的准备把此身奉献给高大上的数据科学行业。除去像计算机、数学和统计学这些科班出身的童鞋,想要转行投身数据分析的其他行业人士也绝不在少数。但数据分析到底是什么、想要成为一名数据行业的从业者又要具备哪些素质,恐怕这才是大家真正需要关注的焦点。笔者花了一些时间,从数据采集到清洗、分析,从可视化到数据的深度挖掘,一整套数据分析处理流程给大家展示一下目前国内关于数据行业的招聘信息到底有些什么。
IT阅读排行榜
2018/08/16
5960
用数据分析告诉你数据分析师能挣多少钱
听说数据分析师挺火,我们来数据分析一下
经常看见各种数据分析师培训的运营推荐,那么数据分析师的就业行情究竟如何?让我们用数据说话,一探究竟!
luanhz
2020/04/01
5980
数据分析行业招聘职位分析报告--基于拉勾网
大数据时代的到来让数据在公司决策上发挥了越来越大的作用,数据分析师也成为了各大企业的标配,那么各大企业又会愿意花多少代价来为数据买单呢?本文将通过从拉勾网爬取到的职位信息来展现「数据分析」职位究竟「钱」景如何:
Awesome_Tang
2018/09/11
1.5K0
数据分析行业招聘职位分析报告--基于拉勾网
只会 Python,如何拿下科技企业的高薪 Offer?
大数据因为其背后蕴含的价值,被《经济学杂志》在2017年誉为“新的石油”,数据导向的工作也成为很多人的向往之一,特别是数据分析。
Python中文社区
2018/07/26
5180
只会 Python,如何拿下科技企业的高薪 Offer?
重磅发布!2020上半年数据分析人才及CDA持证人行业报告
2020年5月6日,人力资源和社会保障部发布《新职业—大数据工程技术人员就业景气现状分析报告》,报告显示:预计2020年中国大数据行业人才需求规模将达210万,2025年前大数据人才需求仍将保持30%—40%的增速,需求总量在2000万人左右,数据分析人才是市场上迫切需要的高端型人才。
CDA数据分析师
2020/07/28
1.2K0
重磅发布!2020上半年数据分析人才及CDA持证人行业报告
不会数据分析技能的你,正在失去竞争力
大数据因为其背后蕴含的价值,被《经济学杂志》在2017年誉为“新的石油”,数据导向的工作也成为很多人的向往之一,特别是数据分析。
Python中文社区
2018/09/21
5080
不会数据分析技能的你,正在失去竞争力
不会数据分析技能的你,正在失去竞争力
大数据因为其背后蕴含的价值,被《经济学杂志》在2017年誉为“新的石油”,数据导向的工作也成为很多人的向往之一,特别是数据分析。
Crossin先生
2018/10/22
4230
不会数据分析技能的你,正在失去竞争力
Day01-数据分析图鉴
最近流传一句话,不会数据分析的程序员,不是好程序员。 其实,不仅仅程序员,无论你未来准备从事什么职业:产品、运营、销售、HR、财务、金融、电商,还是做研发、系统架构,你都会发现,在数不清的岗位需求中,公司对数据分析的能力要求越来越普遍! 有人说,毕业生学数据分析很占优势,因为学得快 有人说,毕业生没有工作经验是优势,可以直接上岗… 有人说,数据分析行业前景好,薪资高,是工作的好选择… 有人说,学数据分析永不过时… 但!数据分析到底是什么?离我们远吗 恰恰相反,数据正在变得越来越常见,小到我们每个人的社交网络、消费信息、运动轨迹,大到企业的销售、运营数据,产品的生产数据,再看看我们每天在做的事情,上知乎、上微博、逛淘宝,上Google,所有的地方都是高度需要数据分析 数据分析当然重要,一般单位还是用excel表格在统计数据 而数据分析,就是就是将数据的价值最大化 借助数据来做决策,而不是盲目地拍脑袋
IT从业者张某某
2023/10/16
2460
Day01-数据分析图鉴
被BAT疯抢的数据分析师,是怎么精进技术的?
自从做公众号以来,一直都有学生问我 现在数据分析那么火热,现在入行迟吗? 会不会刚等我都出来了,行业对数据分析师的需求也接近饱和了? 我的答案是: 不会。 “数据分析的人才需求每年都在增长,而每年的高
用户1621951
2018/04/19
8420
被BAT疯抢的数据分析师,是怎么精进技术的?
从拉勾网数据看深圳数据分析师的职业前景
利用这篇文章提到的方法对拉勾爬虫,然后进行数据分析。通过对局部地区某一岗位的总体分析,找出该地区该职位的职业发展前景规律。本文基于拉勾上2016年12月到2017年1月深圳地区数据分析师招聘数据,为这
小莹莹
2018/04/24
9950
从拉勾网数据看深圳数据分析师的职业前景
【求职】做数据分析师也有三重境界
最近,“大数据”成了媒体解读两会的“利器”。活泼的数据图表一出现,枯燥的政府报告、政策解读都变得有趣和易懂了。   将大数据当作金矿的话,那数据分析师就是掘金人——作为这一新兴产业的弄潮人,他们在人才市场上也是独领风骚哦!普通数据专员月薪3000元以上,高级数据专员年薪可达40万元到50万元。   而最重要的是,通过数据参与企业管理和市场营销,数据分析师成长为企业高层也充满各种可能。   数据分析员究竟工作内容是什么?他们如何工作?进入这行要具备哪些职业素养?本期行当版为你一一解答。   高级数据分析师不好
小莹莹
2018/04/18
1.1K0
Python+BI分析5000条招聘数据,原来数据分析工作在这儿最好找
这两年的大数据热潮带火了数据分析这个职业,很多人想转行干数据分析,但是又不知道现在这个行业的求职环境和前景如何,动了心却不敢贸然行动。
数据分析的那些事儿
2020/02/20
6810
“数据分析”岗位的数据分析项目
“数据分析”岗位的分析 项目介绍 该项目选用了和鲸社区关于数据分析岗位的数据集来进行分析。项目主要使用“job.csv”文件作为数据源,其中数据文件的主要栏位有职位、城市、公司、薪资、学历、工作经验、行业标签。其中本项目所使用的可计算的栏位为最低薪资、最高薪资、平均薪资、奖金率。本项目所使用的可分类的栏位为职位、城市、学历、工作经验、行业标签。通过对数据进行清洗重塑和分析,再使用plotly等工具进行绘图,实现图表的交互式数据可视化,最后使用flask框架(利用了bootstrap)进行网页上的可视化展示
润森
2022/12/20
1K0
“数据分析”岗位的数据分析项目
BAT的数据分析师,是如何精进技术的?
最近常听到的一个观点是,未来十年内 AI 可能会取代 50% 的工作岗位,但早 AI 一步取代你的,可能是邻桌懂数据分析的同事。很多人掌握基本的 Excel,但你真的懂数据么?
挖数
2019/09/17
5800
BAT的数据分析师,是如何精进技术的?
推荐阅读
相关推荐
数据分析师薪资有多高?爬了29个城市的数据告诉你答案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档