【深度学习实验】线性模型(一):使用NumPy实现简单线性模型:搭建、构造损失函数、计算损失值
#【中秋征文】程序人生,中秋共享#
目录
一、实验介绍
二、实验环境
1. 配置虚拟环境
2. 库版本介绍
三、实验内容
0. 导入库
1. 定义线性模型linear_model
2. 定义损失函数loss_function
3. 定义数据
4. 调用函数
一、实验介绍
- 使用Numpy实现
- 线性模型搭建
- 构造损失函数
- 计算损失值
二、实验环境
本系列实验使用了PyTorch深度学习框架,相关操作如下:
1. 配置虚拟环境
conda create -n DL python=3.7
conda activate DL
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
conda install matplotlib
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是偏置项。模型的目标是通过调整权重和偏置项,使预测值与真实值之间的差异最小化。
线性模型有几种常见的应用形式:
线性回归(Linear Regression):用于建立输入特征与连续输出之间的线性关系。它通过最小化预测值与真实值的平方差来拟合最佳的回归直线。
逻辑回归(Logistic Regression):用于建立输入特征与二分类或多分类输出之间的线性关系。它通过使用逻辑函数(如sigmoid函数)将线性组合的结果映射到概率值,从而进行分类预测。
支持向量机(Support Vector Machines,SVM):用于二分类和多分类问题。SVM通过找到一个最优的超平面,将不同类别的样本分隔开。它可以使用不同的核函数来处理非线性问题。
岭回归(Ridge Regression)和Lasso回归(Lasso Regression):用于处理具有多重共线性(multicollinearity)的回归问题。它们通过对权重引入正则化项,可以减小特征的影响,提高模型的泛化能力。
线性模型的优点包括简单、易于解释和计算效率高。它们在许多实际问题中都有广泛的应用。然而,线性模型也有一些限制,例如对非线性关系的建模能力较弱。在处理复杂的问题时,可以通过引入非线性特征转换或使用核函数进行扩展,以提高线性模型的性能。
本系列为实验内容,对理论知识不进行详细阐释
(咳咳,其实是没时间整理,待有缘之时,回来填坑)
0. 导入库
首先,导入了numpy库,用于进行数值计算。
import numpy as np
1. 定义线性模型linear_model
该函数接受输入数据x,使用随机生成的权重w和偏置b,计算输出值output。这里的线性模型的形式为 output = x * w + b。
def linear_model(x):w = np.random.randn(1)b = np.random.randn(1)output = np.dot(x, w) + breturn output
2. 定义损失函数loss_function
该函数接受目标值y和模型预测值prediction,计算均方误差损失。均方误差损失的计算公式为 (prediction - y) * (prediction - y)。
def loss_function(y, prediction):loss = (prediction - y) * (prediction - y)return loss
3. 定义数据
- 生成了一个形状为
(5, 1)的随机输入数据x,每个元素都是在0到1之间的随机数。 - 生成了一个形状为
(5,)的目标值y,包含了5个标签(1或-1),用于模型训练和损失计算。 - 打印了数据的信息,包括每个样本的输入值
x和目标值y。
x = np.random.rand(5, 1)
y = np.array([1, -1, 1, -1, 1]).astype('float')
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函数,传入目标值y和预测值prediction,得到损失值loss。 - 打印了每个样本的损失值。
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])

注意:
本实验的线性模型仅简单地使用随机权重和偏置,计算了模型在训练集上的均方误差损失,没有使用优化算法进行模型参数的更新。
通常情况下会使用梯度下降等优化算法来最小化损失函数,并根据训练数据不断更新模型的参数,具体内容请听下回分解。
相关文章:
【深度学习实验】线性模型(一):使用NumPy实现简单线性模型:搭建、构造损失函数、计算损失值
#【中秋征文】程序人生,中秋共享# 目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入库 1. 定义线性模型linear_model 2. 定义损失函数loss_function 3. 定义数据 4. 调用函数 一、实验介绍 使用Numpy实现 线性模型搭…...
springcloud3 分布式事务-seata的四种模式总结以及异地容灾
一 seata四种模式比较 1.1 seata的4种模式比较 二 seata的高可用 2.1架构 1.建TC服务集群非常简单,启动多个TC服务,注册到nacos即可。 2.做异地多机房容灾,比如一个TC集群在上海,另一个TC集群在杭州, 3.微服务基…...
【办公类-16-06】20230901大班运动场地分配表-斜线排列、5天循环、不跳节日,手动修改节日”(python 排班表系列)
背景需求: 大班组长发来一个“运动排班”的需求表:“就是和去年一样的每个班的运动排班,就因为今年大班变成7个班,删掉一个场地,就要重新做一份,不然我就用去年的那份了(8个大班排班࿰…...
java学习--day13 (static关键字、异常)
文章目录 day12复习今天的内容1.static关键字【重点】1.1生活的角度来理解静态的资源1.2Java中的静态1.2.1static修饰成员变量1.2.2static修饰成员方法1.2.3static修饰代码块 2.异常2.1生活中的异常2.2Java中的异常2.3Throwable类2.4错误和异常2.5异常【重点】2.5.1异常的捕捉2…...
英飞凌TC3xx--深度手撕HSM安全启动(五)--TC3xx HSM启动流程、通信机制分析
在包含HSM的MCU的软件开发里,Host和Hsm应该为两个独立的软件工程。不管是Etas还是Vector的HSM包,都是需要单独收费的。 既然是单独的工程,相应的启动代码也是必须要有的。 在英飞凌的HSM固件架构里,HSM BootRom主要有以下几个作用:内部测试、生产使用、启动配置等。那么接…...
【窗体】Winform两个窗体之间通过委托事件进行值传递,基础篇
2023年,第38周。给自己一个目标,然后坚持总会有收货,不信你试试! 在实际项目中,我们可能会用到一些窗体做一些小工具或者小功能。比如:运行程序,在主窗体A基础上,点击某个按钮希望能…...
mac使用指南
新公司给配备了mac,可惜土鳖的我不会用,所以特地写了一篇文章记录学习mac的过程 快捷键 删除:commanddelete 光标移至最右/左:command右/左箭头 截图:commandshift3/4/5,3代表截全屏,4代表选…...
Git 版本控制系统 笔记
概念:一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码 作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容【团队开发同一个项目的代码版本管理】 1、Git 安装 之前写了࿰…...
VRTK4⭐四.和 UI 元素交互
文章目录 🟥 安装Tilia Unity.UI🟧 配置射线与UI交互器1️⃣ 配置直线射线2️⃣ 配置UI交互器 🟨 配置UI1️⃣ 更新EventSystem2️⃣ 进行Canvas设置 我们要实现的功能: 右手触摸到圆盘:显示直线射线 右手圆盘键按下:与选中UI交互 Ƿ…...
【STM32】SDIO—SD 卡读写01
基于stm32f103 基于零死角玩转STM32—F103指南者 简介 1.SD 卡总共有 8 个寄存器,用于设定或表示 SD 卡信息。 2.SD卡的寄存器不能像STM32那样访问,而是利用命令访问,SDIO 定义了 64 个命令。SD 卡接收到命令后,根据命令要求对…...
SpringCloud Alibaba 整合Sentinel的基本使用
文章目录 一、什么是Sentinel二、Sentinel 的主要特性1. 流量控制:2. 熔断降级:3. 实时监控:4. 规则配置:5. 集成方便: 三、Sentinel 分为哪几部分:1. 核心库(Java 客户端)2. 控制台(…...
Linux中如何执行命令
目录 命令格式: 命令分类: 命令帮助: 1、man 2、help 3、--help 4、info命令 终止命令: 补全命令: 1)补全命令: 2)补全文件名和目录名: 命令格式:…...
基于51单片机的智能病房呼叫系统的设计与实现
一、前言 显示床位号使用到4位数码管,为了节约单片IO口,使用TM1637来驱动数码管。 二、TM1637驱动芯片简介 三、电路设计,使用矩阵按键来模拟每个床位的呼叫按钮 四、编写51单片机代码 void delay_ms(u16 n) {u8 i;while(n--){i 111;while…...
js在一个时间范围内产生一个随机时间
js使用使用到Math.random()方法实现在一个时间范围内产生一个随机时间。 /*在时间范围内产生一个随机时间*/ function randomDate(start, end) {if (start ! null && end ! null) {const _start new Date(start).getTime();const _end new Date(end).getTime();cons…...
Javascript Date 对象相关知识
Javascript Date 对象相关知识 参考文章虹猫1992 创建 Date 对象. 方法一: 自动使用当前的日期和时间作为其初始值. var date new Date();方法二:将给定的毫秒数转换为使用的时间,new Date(dateVal) 如果是数字值,dateVal表示指定日期与1970年1月1日午…...
Vim快捷用法
以下为文本操作 1.快速切换 行首^(shift4) 行尾$(shift6) 文章开始gg 位置末尾G 向下翻页CTRLB 向上翻页CTRLF 2.删除内容 删除一行 dd 3.复制粘贴 复制一行yy 粘贴 p 4.撤销操作 撤销操作 u 恢复操作ctrlr 以下都为底行操作 1.显示行号 set nu 2.多文件分屏阅读 加入阅…...
Stream流的常用方法(自用)
自用的笔记, 有🚩 需要多看 基本数据 自定义实体 Data class Student{private String name;private Integer age;private Double height;public Student() {} }假数据 Student s1 new Student(); s1.setAge(20); s1.setName("cookie"); s1.setHeight(…...
【python函数】torch.nn.Embedding函数用法图解
学习SAM模型的时候,第一次看见了nn.Embedding函数,以前接触CV比较多,很少学习词嵌入方面的,找了一些资料一开始也不是很理解,多看了两遍后,突然顿悟,特此记录。 SAM中PromptEncoder中运用nn.Emb…...
with ldid... /opt/MonkeyDev/bin/md: line 326: ldid: command not found
吐槽傻逼xcode 根据提示 执行了这个脚本/opt/MonkeyDev/bin/md 往这里面添加你brew install 安装文件的目录即可...
[golang gui]fyne框架代码示例
1、下载GO Go语言中文网 golang安装包 - 阿里镜像站(镜像站使用方法:查找最新非rc版本的golang安装包) golang安装包 - 中科大镜像站 go二进制文件下载 - 南京大学开源镜像站 Go语言官网(Google中国) Go语言官网(Go团队) 截至目前(2023年9月17日&#x…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
