深度学习——线性代数相关知识

一、线性代数基础知识

本节将介绍简要地回顾一下部分基本线性代数内容,线性代数中的基本数学对象、算术和运算,并用数学符号和相应的代码实现来表示它们

1、标量

标量由只有一个元素的张量表示。 下面的代码将实例化两个标量,并执行一些熟悉的算术运算,即加法、减法、乘法、除法和指数。

import torch

# 标量运算
x = torch.tensor(3.0)
y = torch.tensor(2.0)
# 加减乘除求幂
print(x + y, x - y, x * y, x / y, x ** y)

结果:
在这里插入图片描述

2、向量

向量可以被视为标量值组成的列表。 这些标量值被称为向量的元素(element)或分量(component)。
1.创建:人们通过一维张量表示向量。一般来说,张量可以具有任意长度,取决于机器的内存限制。

x = torch.arange(4)
x

2.使用:我们可以使用下标来引用向量的任一元素,例如可以通过Xi来引用第个元素。

x[3]

注意, 在数学中向量X可以写为
在这里插入图片描述
3.长度、维度和形状:向量只是一个数字数组,就像每个数组都有一个长度一样,每个向量也是如此。
与普通的Python数组一样,我们可以通过调用Python的内置len()函数来访问张量的长度。

len(x)

当用张量表示一个向量(只有一个轴)时,我们也可以通过.shape属性访问向量的长度。

x.shape

3、矩阵

正如向量将标量从零阶推广到一阶,矩阵将向量从一阶推广到二阶。在数学中,向量A可以写为:
在这里插入图片描述
1.创建:当调用函数来实例化张量时, 我们可以通过指定两个分量
mn来创建一个形状为的矩阵。

A = torch.arange(20).reshape(5, 4)
A

结果
在这里插入图片描述
2.访问:我们可以通过行索引(i)和列索引(j)来访问矩阵中的标量元素Aij.

A[0][0]

3.转置:当我们交换矩阵的行和列时,结果称为矩阵的转置
在这里插入图片描述
在代码中访问矩阵的转置

A.T

结果
在这里插入图片描述

4、张量

就像向量是标量的推广,矩阵是向量的推广一样,我们可以构建具有更多轴的数据结构。 张量(本小节中的“张量”指代数对象)是描述具有任意数量轴的n维数组的通用方法。 例如,向量是一阶张量,矩阵是二阶张量。
1.创建:当调用函数来实例化张量时,

X = torch.arange(24).reshape(2, 3, 4)
X

结果
在这里插入图片描述
2.张量算法的基本性质:标量、向量、矩阵和任意数量轴的张量(本小节中的“张量”指代数对象)有一些实用的属性。 例如,从按元素操作的定义中可以注意到,任何按元素的一元运算都不会改变其操作数的形状。 同样,给定具有相同形状的任意两个张量,任何按元素二元运算的结果都将是相同形状的张量。

2.1矩阵相加:例如,将两个相同形状的矩阵相加,会在这两个矩阵上执行元素加法。

A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone()  # 通过分配新内存,将A的一个副本分配给B
A, A + B

结果
在这里插入图片描述

2.2矩阵的积:具体而言,两个矩阵的按元素乘法称为Hadamard积(Hadamard product),对应位置元素相乘,区别于矩阵乘法

A * B

结果
在这里插入图片描述

2.3矩阵每个元素加2:将张量乘以或加上一个标量不会改变张量的形状,其中张量的每个元素都将与标量相加或相乘。

a = 2
X = torch.arange(24).reshape(2, 3, 4)
a + X, (a * X).shape

5、点积

给定两个向量x,y, 它们的点积是相同位置的按元素乘积的和:

x = torch.ones(4, dtype = torch.float32)
y = torch.ones(4, dtype = torch.float32)
x, y, torch.dot(x, y)

结果
在这里插入图片描述

6、向量—矩阵积

现在我们知道如何计算点积,可以开始理解矩阵-向量积,形如:
在这里插入图片描述

  • 实现方法:

在代码中使用张量表示矩阵-向量积,我们使用mv函数。 当我们为矩阵A和向量x调用torch.mv(A, x)时,会执行矩阵-向量积。 注意,A的列维数(沿轴1的长度)必须与x的维数(其长度)相同。

#查看A是否可以与x相乘
A.shape, x.shape, torch.mv(A, x)

7、矩阵—矩阵乘法

在掌握点积和矩阵-向量积的知识后, 那么矩阵-矩阵乘法(matrix-matrix multiplication)应该很简单。
在这里插入图片描述

  • 实现方法

这里的A是一个5行4列的矩阵,B是一个4行3列的矩阵。 两者相乘后,我们得到了一个5行3列的矩阵。调用torch.mm(A, B)时,会执行矩阵-向量积:

A = torch.ones(5, 4)
B = torch.ones(4, 3)
torch.mm(A, B)

矩阵-矩阵乘法可以简单地称为矩阵乘法不应与“Hadamard积”混淆

二、小结

  1. 标量、向量、矩阵和张量是线性代数中的基本数学对象。
  2. 向量泛化自标量,矩阵泛化自向量。
  3. 标量、向量、矩阵和张量分别具有零、一、二和任意数量的轴。
  4. 一个张量可以通过sum和mean沿指定的轴降低维度。
  5. 两个矩阵的按元素乘法被称为他们的Hadamard积。它与矩阵乘法不同。
概要:   DevCon 实用工具是一种命令行实用工具,可以替代设备管理器。使用 DevCon,您可以启用禁用、重新启动、更新、删除查询单个设备或一组设备。DevCon 提供与开发人员有关但无法在设备管理器中看到的信息。   您可以将 DevCon 用于 Windows 2000 、Windows XPWindows vista。不能将 Devcon 用于 Microsoft Windows 95、Windows 98、或 Windows Millennium Edition。   下载:http://download.microsoft.com/download/1/1/f/11f7dd10-272d-4cd2-896f-9ce67f3e0240/devcon.exe 用法及参数说明:   devcon.exe [-r] [-m:\\] [...]   -r 如果指定它,在命令完成后若需要则重新启动计算机。    是目标计算机的名称。    是将要执行的命令(如下所示)。   ... 是命令需要的一个或多个参数。   要获取关于某一特定命令的帮助,请键入:devcon.exe help   classfilter 允许修改类别筛选程序。   classes 列出所有设备安装类别。   disable 禁用与指定的硬件或实例 ID 匹配的设备。   driverfiles 列出针对设备安装的驱动程序文件。   drivernodes 列出设备的所有驱动程序节点。   enable 启用与指定的硬件或 实例 ID 匹配的设备。   find 查找与指定的硬件或 实例 ID 匹配的设备。   findall 查找设备,包括那些未显示的设备。   help 显示此信息。   hwids 列出设备的硬件 ID。   install 手动安装设备。   listclass 列出某一安装类别的所有设备。   reboot 重新启动本地计算机。   remove 删除与特定的硬件或 实例 ID 匹配的设备。   rescan 扫描以发现新的硬件。   resources 列出设备的硬件资源。   restart 重新启动与特定的硬件或 实例 ID 匹配的设备。   stack 列出预期的设备驱动程序堆栈。   status 列出设备的运行状态。   update 手动更新设备。   UpdateNI 手动更新设备,无用户提示   SetHwID 添加、删除更改根枚举设备的硬件 ID 的顺序。 示例:   devcon -m:\\test find pci\* 列出计算机 test 上的所有已知 PCI 设备。(通过使用 -m,您可以指定一个目标计算机。您必须使用“进程间通信”(IPC) 访问此计算机。)   devcon -r install Windows directory\Inf\Netloop.inf *MSLOOP 安装一个新的 Microsoft 环回适配器实例。这将创建一个新的根枚举设备节点,使用此节点您可以安装“虚拟设备”,如环回适配器。如果需要重新启动计算机,此命令还将以安静模式重启计算机。   devcon classes 列出所有已知的安装类别。输出结果包含短的未本地化的名称(例如,“USB”)描述性名称(例如,“通用串行总线控制器”)。 禁用启用网卡的步骤:   1.用devcon hwids PCI*命令得到所有以PCI开头的设备。这时会列出很多设备,那么哪个才是网卡对应的呢?   2.打开设备管理器,展开网络适配器,找到网卡的名称,然后记住到刚才得到的列表中找对应的Name,然后你会在下面看到好几个ID,随便挑一个就行   3.用devcon disable "PCI\VEN_11AB&DEV_4380&SUBSYS_301B17AA&REV_10"禁用网卡(启用的话讲disable换成enable就行了)   4.其实用PCI开头得到的几组设备中一般第一个就是网卡设备 sysdzw 16:01 2010-11-16
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值