人工智能和机器学习之线性代数(一)
人工智能和机器学习之线性代数(一)
人工智能和机器学习之线性代数一将介绍向量和矩阵的基础知识以及开源的机器学习框架PyTorch。
文章目录
- 人工智能和机器学习之线性代数(一)
- 基本定义
- 标量(Scalar)
- 向量(Vector)
- 矩阵(Matrix)
- 数学符号表示
- 使用 PyTorch 进行操作
- 张量(Tensors)
- 定义变量
- 四则运算
- Sigmoid运算
- ReLU运算
基本定义
标量(Scalar)
标量是表示无方向的单个数值,仅仅表示程度或大小。在编程术语中,可以将标量视为包含单个数字的简单变量,例如整数或浮点数。标量的示例包括 温度(temperature)、年龄(age) 和 体重(weight)。
向量(Vector)
向量是标量的有序列表。之所以向量是有序的,因为标量在向量中的位置很重要。如下图所示 向量y表示电影《复仇者联盟:终局之战》Avengers: Endgame,向量中的每一个数字描述了影片的一个特定属性,其中action表示该电影属于动作类题材的占比为0.99,comedy表示属于喜剧题材的占比为0.52,drama表示属于戏剧题材的占比为0.45,horror表示属于恐怖题材的占比为0.10,romance表示属于浪漫题材的占比为0.26。

这部电影的动作值为 0.99,恐怖值为 0.10。这表明这部电影更像是一部动作片,而不是一部恐怖片。

如果将 action 的值与 horor 的值交换,则该向量将不再准确表示电影《复仇者联盟:终局之战》,它不是恐怖电影。这就是顺序很重要的原因,即,改变顺序后变成另外一个向量。
向量总是以列或行的形式排列。以下是不同长度的行或列形式的向量。

注意,向量要么有一行,要么有一列。如果想要一个具有多行和多列的数学对象,该怎么办?这就是矩阵发挥作用的地方。
矩阵(Matrix)
如果标量是单个数字,向量是标量的一维有序列表,则矩阵是标量的二维数组。下面X 是一个示例矩阵(4行2列)。

每行对应于一个家庭的地址,即表示一个家庭。第一列表示家中卧室的数量,第二列表示浴室的数量。故矩阵X表示了多个家庭,以及每个家庭的特有属性。
二维矩阵也可以表示为向量的形式:
X = [ a ⃗ b ⃗ c ⃗ d ⃗ ] X=\begin{bmatrix} \vec{a} \\ \vec{b} \\ \vec{c} \\ \vec{d} \end{bmatrix} X= abcd
向量a表示地址为123 Maple Grove Lane的家庭:
a ⃗ = [ 3 3 ] \vec{a} =\begin{bmatrix} 3\\ 3 \end{bmatrix} a=[33]
向量b表示地址为888 Ocean View Terrace的家庭:
b ⃗ = [ 4 3 ] \vec{b} =\begin{bmatrix} 4\\ 3 \end{bmatrix} b=[43]
向量c表示地址为100 Birch Street的家庭:
c ⃗ = [ 5 3 ] \vec{c} =\begin{bmatrix} 5\\ 3 \end{bmatrix} c=[53]
向量d表示地址为987 Sunflower Court的家庭:
d ⃗ = [ 5 4 ] \vec{d} =\begin{bmatrix} 5\\ 4 \end{bmatrix} d=[54]
数学符号表示
实数集合R是数学家对在日常生活中使用的所有数字的表示方式:实数数轴线上的所有整数(whole numbers)、负数(negative numbers,)、分数(fractions)、小数(decimal numbers)和无理数( irrational numbers)。

下面的x表示任意一个实数标量:
x ∈ R x\in R x∈R
下面的表示任意一个m维的向量:
[ x 0 x 1 ⋮ x m − 1 ] ∈ R m \begin{bmatrix} x_{0} \\ x_{1}\\ \vdots \\ x_{m-1} \end{bmatrix}\in R^{m} x0x1⋮xm−1 ∈Rm
下面表示任意m x n的矩阵:
[ x 0 , 0 x 0 , 1 … x 0 , n − 1 x 1 , 0 x 1 , 1 … x 1 , n − 1 ⋮ ⋮ ⋮ ⋮ x m − 1 , 0 x m − 1 , 1 … x m − 1 , n − 1 ] ∈ R m × n \begin{bmatrix} x_{0,0} & x_{0,1} & \dots & x_{0,n-1} \\ x_{1,0} & x_{1,1} & \dots & x_{1,n-1}\\ \vdots & \vdots& \vdots& \vdots\\ x_{m-1,0}& x_{m-1,1} & \dots & x_{m-1,n-1} \end{bmatrix} \in R^{m\times n} x0,0x1,0⋮xm−1,0x0,1x1,1⋮xm−1,1……⋮…x0,n−1x1,n−1⋮xm−1,n−1 ∈Rm×n
使用 PyTorch 进行操作
上面章节已经建立了向量和矩阵的定义及其数学符号,本节将在代码中简单尝试一下,加深一下印象。为此,将使用 PyTorch开源机器学习框架。PyTorch 在整个学术界和工业界广泛用于 OpenAI、Amazon、Meta、Salesforce、斯坦福大学等机构和公司的尖端 AI 研究和生产级软件,以及数千家初创公司,因此积累该框架的经验将是实用的。请访问官方 PyTorch 安装说明页面以开始使用。
张量(Tensors)
向量具有1 维,矩阵具有2 个维度,那么涵盖 3 个或更多维度的通用术语是什么?答案:张量。实际上,向量和矩阵也是张量,因为张量是任何N 维数字数组。张量是 PyTorch 中的基本单位。使用 PyTorch 函数 torch.tensor(...) 创建向量和矩阵。
import torch
>>> a = torch.rand((3, 4, 2)) # Create a three
tensor([[[0.8856, 0.9232], # dimensional tensor[0.0250, 0.2977], # with random values[0.4745, 0.2243],[0.3107, 0.9159]],[[0.3654, 0.3746],[0.4026, 0.4557],[0.9426, 0.0865],[0.3805, 0.5034]],[[0.3843, 0.9903],[0.6279, 0.2222],[0.0693, 0.0140],[0.6222, 0.3590]]])
>>> a.shape
torch.Size([3, 4, 2]) # the tensor's dimensions
定义变量
定义向量a和矩阵m:
import torch
a = torch.tensor([[3], [4], [5], [5]])
m = torch.tensor([[3,4], [5,6]])
a = [ 3 4 5 5 ] ∈ R 4 × 1 a=\begin{bmatrix} 3\\ 4\\ 5\\ 5 \end{bmatrix}\in R^{4\times 1} a= 3455 ∈R4×1
m = [ 3 4 5 6 ] m=\begin{bmatrix} 3 & 4\\ 5 & 6 \end{bmatrix} m=[3546]
四则运算
简单的加减乘除四则运算

>>> import torch
>>> a = torch.tensor([1.0, 2.0, 4.0, 8.0])
>>> b = torch.tensor([1.0, 0.5, 0.25, 0.125])
>>> a + b # element-wise addition
tensor([2.00, 2.50, 4.25, 8.125])
>>> a - b # element-wise subtraction
tensor([0.0, 1.5, 3.75, 7.8750])
>>> a * b # element-wise multiplication
tensor([1., 1., 1., 1.])
>>> a / b # element-wise division
tensor([ 1., 4., 16., 64.])
Sigmoid运算
sigmoid(x) 函数将x压缩到范围(0,1), 请注意,只有具有任意较大的值并且希望将它们压缩为介于 0 和 1 之间的值范围时,这非常有用。有时将 sigmoid 的输出解释为概率很有用。
σ ( x ) = 1 1 + e − x \sigma \left ( x \right ) =\frac{1}{1+e^{-x} } σ(x)=1+e−x1


>>> torch.sigmoid(a)
tensor([0.7311, 0.8808, 0.9820, 0.9997])
>> torch.sigmoid(torch.tensor(239))
tensor(1.)
>>> torch.sigmoid(torch.tensor(0))
tensor(0.5000)
>>> torch.sigmoid(torch.tensor(-0.34))
tensor(0.4158)
ReLU运算
ReLU 函数充当过滤器。任何正输入都保持不变,但任何负输入都变为零。
>>> c = torch.tensor([4, -4, 0, 2])
>>> torch.relu(c)
tensor([4, 0, 0, 2])


相关文章:
人工智能和机器学习之线性代数(一)
人工智能和机器学习之线性代数(一) 人工智能和机器学习之线性代数一将介绍向量和矩阵的基础知识以及开源的机器学习框架PyTorch。 文章目录 人工智能和机器学习之线性代数(一)基本定义标量(Scalar)向量&a…...
STM32外设应用详解
STM32外设应用详解 STM32微控制器是意法半导体(STMicroelectronics)推出的一系列基于ARM Cortex-M内核的高性能、低功耗32位微控制器。它们拥有丰富的外设接口和功能模块,可以满足各种嵌入式应用需求。本文将详细介绍STM32的外设及其应用&am…...
docker详解介绍+基础操作 (三)优化配置
1.docker 存储引擎 Overlay: 一种Union FS文件系统,Linux 内核3.18后支持 Overlay2:Overlay的升级版,docker的默认存储引擎,需要磁盘分区支持d-type功能,因此需要系统磁盘的额外支持。 关于 d-type 传送…...
细说Qt的状态机框架及其用法
文章目录 使用场景基本用法状态定义添加转换历史状态QStateMachine是Qt框架中用于构建状态机的一个类,它属于Qt的状态机框架(State Machine Framework)。这个框架提供了一种模型,用于设计响应不同事件(如用户输入、文件I/O或网络活动)的应用程序的行为。通过使用状态机,开发…...
Oracle-表空间与数据文件操作
目录 1、表空间创建 2、表空间修改 3、数据文件可用性切换操作 4、数据文件和表空间删除 1、表空间创建 (1)为 ORCL 数据库创建一个名为 BOOKTBS1 的永久表空间,数据文件为d:\bt01.dbf ,大小为100M,区采用自动扩展…...
C# WinForm实现画笔签名及解决MemoryBmp格式问题
目录 需求 实现效果 开发运行环境 设计实现 界面布局 初始化 画笔绘图 清空画布 导出位图数据 小结 需求 我的文章 《C# 结合JavaScript实现手写板签名并上传到服务器》主要介绍了 web 版的需求实现,本文应项目需求介绍如何通过 C# WinForm 通过画布画笔…...
GC1272替代APX9172/茂达中可应用于电脑散热风扇应用分析
在电脑散热风扇应用中,选择合适的驱动器件对于风扇的性能和效率至关重要。以下是对GC1272替代APX9172/茂达在此类应用中的分析: 1. 功能比较 GC1272: 主要用于驱动直流风扇,具有高效的电流控制和调速功能。支持PWM调速࿰…...
《Linux从小白到高手》综合应用篇:详解Linux系统调优之服务器硬件优化
List item 本篇介绍Linux服务器硬件调优。硬件调优主要包括CPU、内存、磁盘、网络等关键硬件组。 1. CPU优化 选择适合的CPU: –根据应用需求选择多核、高频的CPU,以满足高并发和计算密集型任务的需求。CPU缓存优化: –确保CPU缓存&#x…...
PHP政务招商系统——高效连接共筑发展蓝图
政务招商系统——高效连接,共筑发展蓝图 🏛️ 一、政务招商系统:开启智慧招商新篇章 在当今经济全球化的背景下,政务招商成为了推动地方经济发展的重要引擎。而政务招商系统的出现,更是为这一进程注入了新的活力。它…...
Linux 命令行
这学期是我第一次正式学习 linux ,是在 VMware 里创建了 openEuler 的虚拟机练习 linux 的常用命令。 目前主要在学习 linux 的常用命令,因此这篇博客主要介绍一些常用的命令。 本文将持续更新… 阅读建议 Linux 是一个倒置的树结构(文件系…...
每日一题:单例模式
每日一题:单例模式 ❝ 单例模式是确保一个类只有一个实例,并提供一个全局访问点 1.饿汉式(静态常量) 特点:在类加载时就创建了实例。优点:简单易懂,线程安全。缺点:无论是否使用&…...
前端_001_html扫盲
文章目录 概念标签及属性常用全局属性head里常用标签body里常用标签表情符号 url编码 概念 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body></bod…...
49 | 桥接模式:如何实现支持不同类型和渠道的消息推送系统?
上一篇文章我们学习了第一种结构型模式:代理模式。它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。代理模式在平时的开发经常被用到,常用在业务系统中开发一些非功能性需求…...
使用js和canvas实现简单的网页贪吃蛇小游戏
玩法介绍 点击开始游戏后,使用键盘上的↑↓←→控制移动,吃到食物增加长度,碰到墙壁或碰到自身就游戏结束 代码实现 代码比较简单,直接阅读注释即可,复制即用 <!DOCTYPE html> <html lang"en"…...
Kafka SASL/PLAIN认证模式
Kafka 认证模式命令使用示例 创建Topic 指定用户创建 [rootkafka01 kraft]# /usr/local/kafka3.5-sasl-data/bin/kafka-topics.sh --bootstrap-server x.x.x.11:9092 --create --topic fkaaa35 --replication-factor 3 --partitions 3 --command-config /usr/local/kafka3.…...
苹果AI科学家研究证明基于LLM的模型存在缺陷 因为它们无法推理
苹果公司人工智能科学家的一篇新论文发现,基于大型语言模型的引擎(如 Meta 和 OpenAI 的引擎)仍然缺乏基本的推理能力。该小组提出了一个新的基准–GSM-Symbolic,以帮助其他人衡量各种大型语言模型(LLM)的推…...
鸿蒙NEXT开发-页面路由(基于最新api12稳定版)
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...
asp.net Core MVC 内容协商
内容协商 内容协商是Asp.Net Core 控制器的一项功能,而Asp.Net MVC5 控制器并不支持它。 引入内容协商是为了满足 Web API 框架的需要。 在 Asp.net Core 中,内容协商 被内置到引擎中,供开发人员使用。 顾名思义,内容协商指的是…...
智能EDA小白从0开始 —— DAY10 Yosys
Yosys 概述 工作原理 Yosys的工作原理深入来讲,是一个复杂但有序的硬件设计自动化流程,其核心在于将高级硬件描述语言(HDL)如Verilog或VHDL编写的代码,通过一系列精细的步骤转换为门级网表。这一流程首先涉及对HDL代…...
《OpenCV计算机视觉》—— 人脸检测
文章目录 一、人脸检测流程介绍二、用于人脸检测的关键方法1.加载分类器(cv2.CascadeClassifier())2.检测图像中的人脸(cv2.CascadeClassifier.detectMultiscale()) 三、代码实现 一、人脸检测流程介绍 下面是一张含有多个人脸的…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...
aurora与pcie的数据高速传输
设备:zynq7100; 开发环境:window; vivado版本:2021.1; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程,pc通过pcie传输给fpga,fpga再通过aur…...
timestamp时间戳转换工具
作为一名程序员,一款高效的 在线转换工具 (在线时间戳转换 计算器 字节单位转换 json格式化)必不可少!https://jsons.top 排查问题时非常痛的点: 经常在秒级、毫秒级、字符串格式的时间单位来回转换,于是决定手撸一个…...
小白的进阶之路系列之十四----人工智能从初步到精通pytorch综合运用的讲解第七部分
通过示例学习PyTorch 本教程通过独立的示例介绍PyTorch的基本概念。 PyTorch的核心提供了两个主要特性: 一个n维张量,类似于numpy,但可以在gpu上运行 用于构建和训练神经网络的自动微分 我们将使用一个三阶多项式来拟合问题 y = s i n ( x ) y=sin(x) y=sin(x),作为我们的…...
