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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arcpy总结

arcpy 一、是什么二、为什么三、怎么用1、在哪里打开2、基础术语3、代码组织4、案例(1)裁剪(2)土地变化特征分析(4)文件访问与检测(5)空间数据的查询、插入与更新(6&…

Spring Boot知识管理系统:安全与合规性

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

IP报文格式、IPv6概述

IPv4报文格式 IPv4报文首部长度至少为20字节(没有可选字段和填充的情况下),下面来逐一介绍首部各个字段的含义 Version版本:表示采用哪一种具体的IP协议,对于IPv4来说该字段就填充4以表示,如果是IPv6就填充6IHL首部长度&#xff…

公开课 | 2024最新清华大模型公开课 第3课 神经网络与大模型基础 Part 2

本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结,2小时视频,5分钟阅读,加速内容学习与传播。 大纲 神经网络概述 神经网络的概念 神经网络的应用方式 序列建模与神经网络架构 循环神经网络(RNN)…

Python | Leetcode Python题解之第477题汉明距离总和

题目: 题解: class Solution:def totalHammingDistance(self, nums: List[int]) -> int:n len(nums)ans 0for i in range(30):c sum(((val >> i) & 1) for val in nums)ans c * (n - c)return ans

多线程(三):线程等待获取线程引用线程休眠线程状态

目录 1、等待一个线程:join 1.1 join() 1.2 join(long millis)——"超时时间" 1.3 join(long millis,int nanos) 2、获取当前线程的引用:currentThread 3、休眠当前进程:sleep 3.1 实际休眠时间 3.2 sleep的特殊…

电脑查不到IP地址是什么原因?怎么解决

在日常使用电脑的过程中,有时会遇到无法查询到电脑IP地址的情况,这可能会影响到网络的正常使用。本文将探讨电脑查不到IP地址的可能原因,并提供相应的解决方案。 一、原因分析 ‌网络连接问题‌:首先,网络连接不稳定或…

大数据-159 Apache Kylin 构建Cube 准备和测试数据

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

QD1-P26、27、28 CSS 属性 文本

本节(P26、27、28 三合一)学习:CSS 文本属性。 ‍ 本节视频 https://www.bilibili.com/video/BV1n64y1U7oj?p26 CSS(层叠样式表)中用于设置文本样式的属性有很多,以下是一些常用的文本属性: …

机器视觉AI场景为什么用Python比C++多?

好多开发者在讨论机在机器视觉人工智能领域的时候,纠结到底是用Python还是C,实际上,Python 和 C 都有广泛的应用,选择 Python而不是 C 可能有以下一些原因: 语言易学性和开发效率 语法简洁: Python 语法简…

Windows 安装Redis(图文详解)

Windows 安装Redis(图文详解) Redis是什么数据库? Remote Dictionary Server(Redis) 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语…

【exceljs】纯前端如何实现Excel导出下载和上传解析?

前段时间写过一篇类似的文章,介绍了sheetjs。最近发现了一个更好用的库ExcelJS,它支持高级的样式自定义,并且使用起来也不复杂。实际上sheetjs也支持高级自定义样式,不过需要使用付费版。 下面对比了Exceljs和Sheetjs&#xff1a…

SQLI LABS | SQLI LABS 靶场初识

关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客 0x01:SQLI LABS 靶场简介 SQLi-Labs 靶场是一个专门用于学习和测试 SQL 注入漏洞的开源靶场,该靶场提供了多个具有不同漏洞类型和难度级别的 Web 应用程序的环境。这些应用…

LabVIEW开关磁阻电机特性测量系统

基于LabVIEW软件和特定硬件组件的开关磁阻电机(SRM)特性测量系统,结合多功能数据采集卡,统能够准确地测量并分析SRM的电磁特性,从而支持电机模型的精确建立和性能优化。 项目背景 在工业生产和家用电器领域&#xff0…

树莓派应用--AI项目实战篇来啦-15.SSD Mobilenet V3目标检测

1. Mobilenet 介绍 Mobilenet 是一种专为移动和嵌入式视觉应用而设计的卷积神经网络。它们不使用标准的卷积层,而是基于使用深度可分离卷积的简化架构,使用这种架构,我们可以为移动和嵌入式设备(例如:树莓派&#xff0…

chattts一步步的记录,先跑起来。

0.下载git工具 Git - Downloads (git-scm.com)https://git-scm.com/downloads Download – TortoiseGit – Windows Shell Interface to Githttps://tortoisegit.org/download/ 1.安装 随意,可以安汉化,也可不安。无所谓 2.建个目录,我的上…

tkinter库的应用小示例:文本编辑器

tkinter库的应用小示例:文本编辑器 要 求: 创建一个文本编辑器,功能包括,创建、打开、编辑、保存文件。一个Button小组件,命名为btn_open,用于打开要编辑的文件,一个Button小组件,命名为btn_s…

Mysql(3)—数据库相关概念及工作原理

一、数据库相关概念 ​ 数据库(Database, DB) : 数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。 数据库管理系统(Database Management System, DBMS) &#xf…

【AIGC】ChatGPT提示词Prompt高效编写模式:结构化Prompt、提示词生成器与单样本/少样本提示

💯前言 在如今AI技术迅猛发展的背景下,尽管像ChatGPT这样的大型语言模型具备强大的生成能力,但它们的输出质量有时仍难以完全满足我们的预期。为了让ChatGPT生成更加准确、可靠的内容,掌握高效的Prompt编写技巧变得尤为重要。本文…

Rust 与生成式 AI:从语言选择到开发工具的演进

在现代软件开发领域,Rust 语言正在逐步崭露头角,尤其是在高性能和可靠性要求较高的应用场景。与此同时,生成式 AI 的崛起正在重新塑造开发者的工作方式,从代码生成到智能调试,生成式 AI 的应用正成为提升开发效率和质量…