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

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

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

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

相关文章

【硬件模块】HC-08蓝牙模块

蓝牙模块型号 HC-08蓝牙模块实物图 HC-08蓝牙模块引脚介绍 STATE:状态输出引脚。未连接时,则为低电平。连接成功时,则为高电平。可以在程序中作指示引脚使用; RXD:串口接收引脚。接单片机的 TX 引脚(如…

Linux编辑器-vim的配置及其使用

vim是一种多模式的编辑器: 1.命令模式(默认模式):用户所有的输入都会当作命令,不会当作文本输入。 2.插入模式:写代码, 按「 i 」切换进入插入模式「 insert mode 」,按 “i” 进入…

SCI论文快速排版:word模板一键复制样式和格式【重制版】

关注B站可以观看更多实战教学视频:hallo128的个人空间SCI论文快速排版:word模板一键复制样式和格式:视频操作视频重置版2【推荐】 SCI论文快速排版:word模板一键复制样式和格式【重制版】 模板与普通文档的区别 为了让读者更好地…

【C++贪心 DFS】2673. 使二叉树所有路径值相等的最小代价|1917

本文涉及知识点 C贪心 反证法 决策包容性 CDFS LeetCode2673. 使二叉树所有路径值相等的最小代价 给你一个整数 n 表示一棵 满二叉树 里面节点的数目,节点编号从 1 到 n 。根节点编号为 1 ,树中每个非叶子节点 i 都有两个孩子,分别是左孩子…

苹果最新论文:LLM只是复杂的模式匹配 而不是真正的逻辑推理

大语言模型真的可以推理吗?LLM 都是“参数匹配大师”?苹果研究员质疑 LLM 推理能力,称其“不堪一击”!苹果的研究员 Mehrdad Farajtabar 等人最近发表了一篇论文,对大型语言模型 (LLM) 的推理能…

【数据结构笔记】搜索树

目录 二叉搜索树 结构特征 搜索 插入 删除 单子节点删除 双子节点删除 平衡二叉搜索树 AVL树 失衡与重平衡 插入失衡 删除失衡 “34”平衡重构 伸展树 逐层伸展 双层伸展 插入 删除 红黑树 结构特征 插入 自底向上的染色插入 双红修正 RR-1 RR-2 自顶…

超GPT3.5性能,无限长文本,超强RAG三件套,MiniCPM3-4B模型分享

MiniCPM3-4B是由面壁智能与清华大学自然语言处理实验室合作开发的一款高性能端侧AI模型,它是MiniCPM系列的第三代产品,具有4亿参数量。 MiniCPM3-4B模型在性能上超过了Phi-3.5-mini-Instruct和GPT-3.5-Turbo-0125,并且与多款70亿至90亿参数的…

RabbitMQ 入门(四)SpringAMQP五种消息类型

一、WorkQueue(工作消息队列) Work queues,也被称为(Task queues),任务模型。简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息。 当消息处理比较耗时的时候,可能生产消息的速度会远远大于…

Python自然语言处理之pyltp模块介绍、安装与常见操作案例

pyltp是哈尔滨工业大学社会计算与信息检索研究中心推出的一款基于Python封装的自然语言处理工具,它提供了哈工大LTP(Language Technology Platform)工具包的接口。LTP工具包以其强大的中文分词、词性标注、命名实体识别、依存句法分析等功能&…

Vue——Uniapp回到顶部悬浮按钮

代码示例 <template><view class"updata" click"handleup" :style"{bottom: bottomTypepx}" ><i class"iconfont icon-huidaodingbu"></i></view> </template><script> export default {n…

《机器学习与数据挖掘综合实践》实训课程教学解决方案

一、引言 随着信息技术的飞速发展&#xff0c;人工智能已成为推动社会进步的重要力量。作为人工智能的核心技术之一&#xff0c;机器学习与数据挖掘在各行各业的应用日益广泛。本方案旨在通过系统的理论教学、丰富的实践案例和先进的实训平台&#xff0c;帮助学生掌握机器学习…

C++ 比大小

//输入两个可能有前导 0 的大整数&#xff0c;a,b请输出他们谁大谁小#include <iostream> #include <string> #include <string.h> using namespace std; #define M 100005 int main() {char a[M], b[M];char *pa, *pb;pa a;pb b;cin >> a >> …

第十五届蓝桥杯C/C++学B组(解)

1.握手问题 解题思路一 数学方法 50个人互相握手 &#xff08;491&#xff09;*49/2 &#xff0c;减去7个人没有互相握手&#xff08;61&#xff09;*6/2 答案&#xff1a;1024 解题思路二 思路&#xff1a; 模拟 将50个人从1到50标号&#xff0c;对于每两个人之间只握一…

P327. 渔夫捕鱼算法问题

问题描述&#xff1a; A、B、C、D、E 这5个人合伙夜间捕鱼&#xff0c;凌晨时都已经疲惫不堪&#xff0c;于是各自在河边的树丛中找地方睡着了。第二天日上三竿时&#xff0c;A第一个醒来&#xff0c;他将鱼平分为5份&#xff0c;把多余的一条扔回河中&#xff0c;然后拿着自己…

【D3.js in Action 3 精译_034】4.1 D3 中的坐标轴的创建(中一)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

FFmpeg的简单使用【Windows】--- 简单的视频混合拼接

实现功能 点击【选择文件】按钮在弹出的对话框中选择多个视频&#xff0c;这些视频就是一会将要混剪的视频素材&#xff0c;点击【开始处理】按钮之后就会开始对视频进行处理&#xff0c;处理完毕之后会将处理后的文件路径返回&#xff0c;并在页面展示处理后的视频。 视频所…

处理Java内存溢出问题(java.lang.OutOfMemoryError):增加JVM堆内存与调优

处理Java内存溢出问题&#xff08;java.lang.OutOfMemoryError&#xff09;&#xff1a;增加JVM堆内存与调优 在进行压力测试时&#xff0c;遇到java.lang.OutOfMemoryError: Java heap space错误或者nginx报错no live upstreams while connecting to upstream通常意味着应用的…

[Hbase]一 HBase基础

1. HBase简介 1.1 HBase定义 HBase数据模型的关键在于 稀疏、分布式、多维、排序 的映射。其中映射 map指代非关系型数据库的 key-Value结构。 1.2 HBase数据模型 1)Name Space 命名空间,类似于关系型数据库的database 概念,每个命名空间下有多个表。HBase 两个自…

鸿蒙NEXT开发-知乎评论小案例(基于最新api12稳定版)

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

【C++】--内存管理

&#x1f47e;个人主页: 起名字真南 &#x1f47b;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 C/C内存分布2 C语言中动态内存管理方式 &#xff1a;3 C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4 operator new与operator delete4.1 opera…