人工智能和机器学习之线性代数(一)

news2024/11/24 21:06:08

人工智能和机器学习之线性代数(一)

人工智能和机器学习之线性代数一将介绍向量和矩阵的基础知识以及开源的机器学习框架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。

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

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

向量总是以列或行的形式排列。以下是不同长度的行或列形式的向量。
行向量或列向量
注意,向量要么有一行,要么有一列。如果想要一个具有多行和多列的数学对象,该怎么办?这就是矩阵发挥作用的地方。

矩阵(Matrix)

如果标量是单个数字,向量是标量的一维有序列表,则矩阵是标量的二维数组。下面X 是一个示例矩阵(4行2列)。
矩阵X
每行对应于一个家庭的地址,即表示一个家庭。第一列表示家中卧室的数量,第二列表示浴室的数量。故矩阵X表示了多个家庭,以及每个家庭的特有属性。

二维矩阵也可以表示为向量的形式:

X = [ a ⃗ b ⃗ c ⃗ d ⃗ ] X=\begin{bmatrix} \vec{a} \\ \vec{b} \\ \vec{c} \\ \vec{d} \end{bmatrix} X= a b c d

向量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)。
实数R
下面的x表示任意一个实数标量

x ∈ R x\in R xR

下面的表示任意一个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} x0x1xm1 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,0xm1,0x0,1x1,1xm1,1x0,n1x1,n1xm1,n1 Rm×n

使用 PyTorch 进行操作

上面章节已经建立了向量和矩阵的定义及其数学符号,本节将在代码中简单尝试一下,加深一下印象。为此,将使用 PyTorch开源机器学习框架。PyTorch 在整个学术界和工业界广泛用于 OpenAIAmazonMetaSalesforce、斯坦福大学等机构和公司的尖端 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+ex1

sigma函数图像

sigmoid

>>> 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])

relu
relu函数图像

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

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

相关文章

通过观测云 DataKit Extension 接入 AWS Lambda 最佳实践

前言 AWS Lambda 是一项计算服务,使用时无需预配置或管理服务器即可运行代码。AWS Lambda 只在需要时执行代码并自动缩放。借助 AWS Lambda,几乎可以为任何类型的应用程序或后端服务运行代码,而且无需执行任何管理。 Lambda Layer 是一个包…

5 个免费高清无水印视频素材库

短视频创作,素材是关键。以下为你推荐 5 个超棒的免费且无版权的高清无水印短视频素材网站,助你获取创作资源。 蛙学网 国内顶级素材站,有海量高质量素材,领域涉及自然风光、情感生活、游戏动漫以及社会人文等。其素材均为 4K 高…

集合框架07:LinkedList使用

1.视频链接:13.14 LinkedList使用_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1zD4y1Q7Fw?spm_id_from333.788.videopod.episodes&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5&p142.LinkedList集合的增删改查操作 package com.yundait.Demo01;im…

Vmware开箱即用win7系统

下载文件 下载VMWare与win7成品虚拟机资料(PS:里面有Win10 和Win11,使用方法都是一样的) ⏬下载链接⏬ 下载链接 使用虚拟机打开成品虚拟机

python怎么引用文件

新建python文件 :在同目录lib下创建mylib.py和loadlib.py两个文件。 在mylib.py文件中创建一个Hello的类,并且给这个类添加一个sayHello的方法,让它输出hello python 在loadlib.py 文件中引入mylib import mylib 在loadlib中调用引用过来的py…

QT开发--串口通信

第十六章 串口通信 16.1 串口通信基础 串口通信主要通过DB9接口&#xff0c;适用于短距离&#xff08;<10米&#xff09;。关键参数包括&#xff1a; 波特率&#xff1a;每秒传输bit数&#xff0c;如9600。数据位&#xff1a;信息包中的有效数据位数。停止位&#xff1a;…

Excel:vba实现禁止新增工作表

实现效果&#xff1a;禁止新增工作表 步骤如下&#xff1a; 1.点击开发工具里面的Visual Basic 2.不要自己创建&#xff0c;点击ThisWorkbook&#xff0c;点击选择Workbook&#xff0c;点击选择NewSheet 这里的NewSheet就是工作簿事件 代码如下&#xff1a; 这是事件处理程序…

day∞-过滤器-拦截器

一、过滤器 二、拦截器

【Java面试——基础知识——Day5】

1. 异常 1.1 Exception 和 Error 有什么区别&#xff1f; 在 Java 中&#xff0c;所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类: Exception :程序本身可以处理的异常&#xff0c;可以通过 catch 来进行捕获。Exception 又可以…

二叉树LeetCode刷题

二叉树LeetCode刷题 1. 检查两颗树是否相同2. 另一颗树的子树3. 翻转二叉树4. 判断一颗二叉树是否是平衡二叉树5. 二叉搜索树与双向链表6. 对称二叉树7. 二叉树的构建及遍历8. 二叉树的分层遍历9. 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先10. 根据一棵树的前序遍…

算法竞赛(Python)-AI的思维模式(搜索)

文章目录 一 、深度优先搜索1 零钱搭配2“油漆桶”与连通性 二 、记忆化三、在游戏中制胜的AI1 永远的平局——井字棋2 一起来解谜——数独3 数字华容道 一 、深度优先搜索 深度优先搜索是最基本的搜索方法&#xff0c;在深度优先搜索的过程中&#xff0c;如果把所有的可行解看…

如果你的YOLO环境已经配置好了,如何打开项目文件

1.首先将【目标检测系统源码】下载完成之后&#xff0c;解压到某个路径下&#xff08;可以解压在D盘或者F盘都可&#xff09;。然后使用Pycharm打开这个项目文件。 2.使用 pip 命令安装所需的依赖&#xff0c;可以通过requirements.txt文件进行安装。请务必按照 requirements.t…

springboot第76集:线程,ThreadGroup

导出数据&#xff1a; 查询结果可以使用脚本或工具&#xff08;如 Python 的 Pandas 库&#xff09;将数据导出为 Excel 格式。例如&#xff0c;使用 Python&#xff1a; 当查询数组中有大量数据&#xff08;如一千多条&#xff09;时&#xff0c;可以使用 _mget&#xff08;多…

系统分析师17:系统安全分析与设计

1 内容概述 2 对称加密与非对称加密技术 在信息安全领域&#xff0c;对称加密和非对称加密是两种最常见的加密技术。它们各自有不同的特点和应用场景&#xff0c;下面将详细介绍这两种加密技术。 2.1 对称加密 2.1.1 概念 对称加密是指使用相同的密钥&#xff08;也称为密钥…

opencv学习:风格迁移对图像风格进行更改

介绍&#xff1a; 风格迁移是一种计算机视觉技术&#xff0c;它能够让一张图片看起来像是用另一种风格画出来的。想象一下&#xff0c;你有一张普通的照片&#xff0c;但你希望它看起来像是梵高的印象派画作&#xff0c;或者像是某个著名艺术家的作品&#xff0c;风格迁移就可以…

C语言 ——— oj题:搜索插入位置

目录 题目要求 代码实现 题目要求 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置 请必须使用时间复杂度为 O(long n) 的算法 示例 1: 输入: nums [1,3,5,6], t…

golang包管理

package 在工程化的Go语言开发项目中&#xff0c;Go语言的源码复用是建立在包&#xff08;package&#xff09;基础之上的。本文介绍了Go语言中如何定义包、如何导出包的内容及如何导入其他包。 包与依赖管理 本章学习目标 掌握包的定义和使用掌握init初始化函数的使用掌握…

一、el-table的滚动条加粗并解决遮挡内容问题

近期接到产品提的需求&#xff0c;反馈用户说table里面的滚动条过小&#xff0c;不方便拖动&#xff0c;希望加粗&#xff0c;然后我就研究了下如何加粗&#xff0c;发现加粗后会导致遮挡内容的问题&#xff0c;并予以解决。以下是实现和解决的方法和步骤。 先看看官网的滚动条…

[翻译]MOSIP 101

目录 Architecture Principles of MOSIP &#xff08;MOSIP架构原则&#xff09; MOSIP Functional Architecture&#xff08;MOSIP功能架构&#xff09; MOSIP Features&#xff08;MOSIP特点&#xff09; MOSIP Modules&#xff08;MOSIP模块&#xff09; MOSIP Logical…

manjaro kde 24 应该如何设置才能上网(2024-10-13亲测)

要在 Manjaro KDE 24 上设置网络连接&#xff0c;可以按照以下步骤进行设置&#xff0c;确保你能够连接到互联网&#xff1a; 是的&#xff0c;你可以尝试使用一个简单的自动修复脚本来解决 Manjaro KDE 中的网络连接问题。这个脚本将检查网络服务、重新启动 NetworkManager、…