iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python深度学习线性代数示例详解
  • 457
分享到

Python深度学习线性代数示例详解

2024-04-02 19:04:59 457人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录标量向量长度、维度和形状矩阵张量张量算法的基本性质降维点积矩阵-矩阵乘法范数标量 标量由普通小写字母表示(例如,x、y和z)。我们用 R \mathbb{R} R表示所有(连续)

标量

标量由普通小写字母表示(例如,x、y和z)。我们用 R \mathbb{R} R表示所有(连续)实数标量的空间。

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


import torch
x = torch.tensor([3.0])
y = torch.tensor([2.0])
x + y, x * y, x / y, x ** y

tensor([5]), tensor([6]), tensor([1.5]), tensor([9])

向量

向量是标量值组成的列表,我们将这些标量值称为向量的元素或分量。
数学表示法中,我们通常将向量记为粗体、小写的符号(例如, x \mathbf{x} x、 y \mathbf{y} y和 z \mathbf{z} z)

我们通过一维张量处理向量。一般来说,张量可以具有任意长度,最大长度取决于机器的内存限制。


x = torch.arange(4)

tensor([0, 1, 2, 3])

大量文献认为列向量是向量的默认方向。在数学中,向量 x \mathbf{x} x可以写为:

在这里插入图片描述

我们可以通过张量的索引来访问任一元素。


x[3]

tensor(3)

长度、维度和形状

在数学表示法中,如果我们想说一个向量 x \mathbf{x} x由 n n n个实值标量组成,我们可以将其表示为 x ∈ R n \mathbf{x} \in \mathbb{R}^{n} x∈Rn。向量的长度通常称为向量的维度。

与普通的python数组一样,我们可以通过调用Python的内置len()函数来访问张量的长度。


len(x)

4

当用张量表示一个向量(只有一个轴)时,我们也可以通过.shape属性访问向量的长度。形状(shape)是一个元组,列出了张量沿每个轴的长度(维数)。对于只有一个轴的张量,形状只有一个元素。


x.shape

torch.Size([4])

注意,维度(dimension)这个词在不同上下文时往往会有不同的含义,这经常会使人感到困惑。为了清楚起见,我们在此明确一下。向量或轴的维度被用来表示向量或轴的长度,即向量或轴的元素数量。然而,张量的维度用来表示张量具有的轴数。在这个意义上,张量的某个轴的维数就是这个轴的长度。

矩阵

在这里插入图片描述

当矩阵具有相同数量的行和列时,其形状将变为正方形;因此,它被称为方矩阵。

当调用函数来实例化张量时,我们可以通过指定两个分量m和n来创建一个形状为 m×n的矩阵。


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

tensor([[0, 1, 2, 3],
        [4, 5, 6, 7],
        [8, 9, 10, 11],
        [12, 13, 14, 15],
        [16, 17, 18, 19]])

在这里插入图片描述


A.T

tensor([[0, 4, 8, 12, 16],
        [1, 5, 9, 13, 17],
        [2, 6, 10, 14, 18],
        [3, 7, 11, 15, 19]])

矩阵是有用的数据结构:它们允许我们组织具有不同变化模式的数据。例如,我们矩阵中的行可能对应于不同的房屋(数据样本),而列可能对应于不同的属性。因此,尽管单个向量的默认方向是列向量,但在表示表格数据集的矩阵中,将每个数据样本作为矩阵中的行向量更为常见。

张量

张量为我们提供了描述具有任意数量轴的 n n n维数组的通用方法。

当我们开始处理图像时,张量将变得更加重要,图像以 n n n维数组形式出现,其中3个轴对应于高度、宽度以及一个通道(channel)轴,用于堆叠颜色通道(红色、绿色和蓝色)。现在,我们将跳过高阶张量,集中在基础知识上。


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

tensor([[[0, 1, 2, 3],
         [4, 5, 6, 7],
         [8, 9, 10, 11]],
        [[12, 13, 14, 15],
         [16, 17, 18, 19],
         [20, 21, 22, 23]]])

张量算法的基本性质

任何按元素的一元运算都不会改变其操作数的形状。同样,给定具有相同形状的任意两个张量,任何按元素二元运算的结果都将是相同形状的张量。例如,将两个相同形状的矩阵相加会在这两个矩阵上执行元素的加法。


A = torch.arange(20, dtype=torch.float32).reshape(5,4)
B = A.clone
A, A + B

tensor([[0, 1, 2, 3],
        [4, 5, 6, 7],
        [8, 9, 10, 11],
        [12, 13, 14, 15],
        [16, 17, 18, 19]]),
tensor([[0, 2, 4, 6],
        [8, 10, 12, 14],
        [16, 18, 20, 22],
        [24, 26, 28, 30],
        [32, 34, 36, 38]])

具体而言,两个矩阵按元素乘法称为哈达玛积。


A * B

tensor([[0, 1, 4, 9],
        [16, 25, 36, 49],
        [64, 81, 100, 121],
        [144, 169, 196, 225],
        [256, 289, 324, 361]])

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

降维

我们可以对任意张量进行一个有用的操作是计算其元素的和。在代码中,我们可以调用计算求和的函数:


x = torch.arange(4, dtype = torch.float32)
x.sum()

tensor(6)

默认的情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。我们还可以指定张量沿哪一个轴来通过求和降低维度。以矩阵为例,为了通过求和所有行的元素来降维(轴0),我们可以在调用函数时指定axis = 0。由于输入矩阵沿着0轴降维以生成输出张量,因此输入的轴0的维数在输出形状中丢失。


A.shape

torch.Size([5, 4])

A_sum_axis0 = A.sum(axis = 0)
A_sum_axis0, A_sum_axis0.shape

tensor([40, 45, 50, 55]), torch.Size([4])

指定axis = 1将通过汇总所有列的元素降维(轴1)。因此,输入的轴1的维数在输出形状中消失。


A_sum_axis1 = A.sum(axis = 1)
A_sum_axis1, A_sum_axis1.shape

tensor([6, 22, 38, 54, 70]), torch.Size([5])

沿着行和列对矩阵求和,等价于对矩阵的所有元素进行求和。


A.sum(axis=[0, 1])

tensor(190)

一个与求和相关的量是平均值。在代码中,我们可以调用函数来计算任意形状张量的平均值。


A.mean()

同样,计算平均值的函数也可以沿指定轴降低张量的维度。


A.mean(axis = 0)

点积

最基本的操作是点积。
给定两个向量,点积是它们相同位置的按元素乘积的和。


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

tensor([0, 1, 2, 3]), tensor([1, 1, 1, 1]), tensor(6)

矩阵-矩阵乘法

在下面的代码中,我们在A和B上执行矩阵乘法。这里的A是一个5行4列的矩阵,B是一个4行3列的矩阵。相乘后,我们得到一个5行3列的矩阵。


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

范数

线性代数中最有用的一些运算符是范数。非正式地说,一个向量的范数告诉我们一个向量有多大。这里考虑的大小(size)概念不涉及维度,而是分量的大小。

在线性代数中,向量范数是将向量映射到标量的函数 f f f。向量范数要满足一些属性。给定任意向量 x \mathbf{x} x,第一个性质来说,如果我们按常数因子 α \alpha α缩放向量的所有元素,其范数也会按相同常数因子的绝对值缩放:

在这里插入图片描述

第二个性质是我们熟悉的三角不等式:

在这里插入图片描述

第三个性质简单地说范数必须是非负的。

在这里插入图片描述

最后一个性质要求范数最小为0,当且仅当向量全由0组成。

在这里插入图片描述

在这里插入图片描述


u = torch.tensor([3, 4])
torch.nORM(u)

在这里插入图片描述


u = torch.tensor([3, 4])
torch.abs(u).sum()

tensor(7)

在这里插入图片描述


torch.norm(torch.ones((4, 9)))

范数和目标:

深度学习中,我们经常试图解决优化问题:最大化分配给观测数据的概率;最小化预测和真实观测之间的距离。用向量表示物品(如单词、产品或新闻文章),以便最小化相似项目之间的距离,最大化不同项目之间的距离。通常,目标,或许是深度学习算法最终要的组成部分(除了数据),被表达为范数。

以上就是Python深度学习线性代数示例详解的详细内容,更多关于Python线性代数的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python深度学习线性代数示例详解

本文链接: https://www.lsjlt.com/news/137707.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python深度学习线性代数示例详解
    目录标量向量长度、维度和形状矩阵张量张量算法的基本性质降维点积矩阵-矩阵乘法范数标量 标量由普通小写字母表示(例如,x、y和z)。我们用 R \mathbb{R} R表示所有(连续)...
    99+
    2022-11-12
  • Python-OpenCV深度学习入门示例详解
    目录0.前言1.计算机视觉中的深度学习简介1.1深度学习的特点1.2深度学习大爆发2.用于图像分类的深度学习简介3.用于目标检测的深度学习简介4.深度学习框架keras介绍与使用4....
    99+
    2022-11-12
  • Python-OpenCV深度学习的示例分析
    这篇文章将为大家详细讲解有关Python-OpenCV深度学习的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 计算机视觉中的深度学习简介深度学习推动了计算机视觉领域的深刻变革,我们首先解释深...
    99+
    2023-06-22
  • Python深度学习实战PyQt5布局管理项目示例详解
    目录1. 从绝对定位到布局管理1.1 什么是布局管理1.2 Qt 中的布局管理方法2. 水平布局(Horizontal Layout)3. 垂直布局(Vertical Layout)...
    99+
    2022-11-12
  • python深度学习tensorflow卷积层示例教程
    目录一、旧版本(1.0以下)的卷积函数:tf.nn.conv2d参数:二、1.0版本中的卷积函数:tf.layers.conv2d定义参数:示例更复杂一点的一、旧版本(1.0以下)的...
    99+
    2022-11-11
  • python深度学习tensorflow入门基础教程示例
    目录正文1、编辑器2、常量3、变量4、占位符5、图(graph)例子1:hello world例子2:加法和乘法例子3:矩阵乘法正文 TensorFlow用张量这种数据结构来表示所有...
    99+
    2022-11-11
  • Python深度学习实战PyQt5窗口切换的堆叠布局示例详解
    目录1. 堆叠布局简介1. 1什么是堆叠布局(Stacked Layout)1.2 堆叠布局的实现方法2. 创建多窗口切换的堆叠布局3. 堆叠布局的主程序设计3.1 QStacked...
    99+
    2022-11-12
  • Python数学建模PuLP库线性规划入门示例详解
    目录1、什么是线性规划2、PuLP 库求解线性规划-(0)导入 PuLP库函数-(1)定义一个规划问题-(2)定义决策变量-(3)添加目标函数-(4)添加约束条件-(5)求解3、Py...
    99+
    2022-11-12
  • Python深度学习pytorch神经网络Dropout应用详解解
    目录扰动的鲁棒性实践中的dropout简洁实现扰动的鲁棒性 在之前我们讨论权重衰减(L2​正则化)时看到的那样,参数的范数也代表了一种有用的简单性度量。简单性的另一个有用...
    99+
    2022-11-12
  • Python深度强化学习之DQN算法原理详解
    目录1 DQN算法简介2 DQN算法原理2.1 经验回放2.2 目标网络3 DQN算法伪代码DQN算法是DeepMind团队提出的一种深度强化学习算法,在许多电动游戏中达到人类玩家甚...
    99+
    2022-11-12
  • Python深度学习之FastText实现文本分类详解
    FastText是一个三层的神经网络,输入层、隐含层和输出层。 FastText的优点: 使用浅层的神经网络实现了word2vec以及文本分类功能,效果与深层网络差不多,节约资源,...
    99+
    2022-11-11
  • python深度学习tensorflow实例数据下载与读取
    目录一、mnist数据二、CSV数据 三、cifar10数据一、mnist数据 深度学习的入门实例,一般就是mnist手写数字分类识别,因此我们应该先下载这个数据集。 te...
    99+
    2022-11-11
  • python机器学习之线性回归详解
    目录一、python机器学习–线性回归二、OLS线性回归2.1 Ordinary Least Squares 最小二乘法2.2 OLS线性回归的代码实现三、梯度下降算法3.1 GDL...
    99+
    2022-11-12
  • Python数学建模StatsModels统计回归之线性回归示例详解
    目录1、背景知识1.1 插值、拟合、回归和预测1.2 线性回归2、Statsmodels 进行线性回归2.1 导入工具包2.2 导入样本数据2.3 建模与拟合2.4 拟合和统计结果的...
    99+
    2022-11-12
  • Python机器学习从ResNet到DenseNet示例详解
    目录从ResNet到DenseNet稠密块体过渡层DenseNet模型训练模型从ResNet到DenseNet 上图中,左边是ResNet,右边是DenseNet,它们在跨层上的...
    99+
    2022-11-12
  • Python深度学习之图像标签标注软件labelme详解
    前言 labelme是一个非常好用的免费的标注软件,博主看了很多其他的博客,有的直接是翻译稿,有的不全面。对于新手入门还是有点困难。因此,本文的主要是详细介绍labelme该如何使用。 一、labelme是什么? l...
    99+
    2022-06-02
    Python图像标签标注软件labelme Python labelme
  • 【Python | 深度学习】safetensors 包的介绍和使用案例(含源代码)
    safetensors 是一种用于安全存储张量(与 pickle 相反)的新型简单格式,并且仍然很快(零拷贝)。 safetensors 真的很快。 一、安装 1.1 pip 安装 pip insta...
    99+
    2023-10-12
    深度学习 python pytorch
  • Python学习之二叉树实现的示例详解
    Python实现二叉树 Python实现二叉树可以使用面向对象编程的方式,通过定义二叉树节点类来实现。每个节点包含一个数据元素、左右子节点指针和一些操作方法,如插入节点、查找节点、...
    99+
    2023-05-15
    Python实现二叉树 Python二叉树
  • Python 机器学习之线性回归详解分析
    为了检验自己前期对机器学习中线性回归部分的掌握程度并找出自己在学习中存在的问题,我使用C语言简单实现了单变量简单线性回归。 本文对自己使用C语言实现单变量线性回归过程中遇到的问题和心...
    99+
    2022-11-12
  • Python深度学习pytorch神经网络图像卷积运算详解
    目录互相关运算卷积层特征映射由于卷积神经网络的设计是用于探索图像数据,本节我们将以图像为例。 互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cros...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作