为深度学习引入张量

news/2025/1/11 7:54:43/

为深度学习引入张量

什么是张量?

神经网络中的输入、输出和转换都是使用张量表示的,因此,神经网络编程大量使用张量。

张量是神经网络使用的主要数据结构。

张量的概念是其他更具体概念的数学概括。让我们看看一些张量的具体实例。

张量的具体实例

这些示例都是更一般的张量概念的具体实例:

  • 数字
  • 标量
  • 数组
  • 向量
  • 二维数组
  • 矩阵

让我们将上述张量实例列表组织成两组:

  • 数字、数组、二维数组
  • 标量、向量、矩阵

第一组的三个术语(数字、数组、二维数组)通常是计算机科学中使用的术语,而第二组(标量、向量、矩阵)通常是数学中使用的术语。

我们经常看到这种情况,不同研究领域对同一概念使用不同的词汇。在深度学习中,我们通常只是将所有这些称为张量。

让我们进一步研究这些术语。每组中的术语在我们从左到右移动时相互对应。为了展示这种对应关系,我们可以重新排列我们的术语列表,得到三组每组两个术语:

  • 数字、标量
  • 数组、向量
  • 二维数组、矩阵
访问元素所需的索引

每对中的关系是,两个元素都需要相同数量的索引来引用数据结构中的特定元素。

访问元素所需的索引计算机科学数学
0数字标量
1数组向量
2二维数组矩阵

例如,假设我们有这样一个数组:

> a = [1,2,3,4]

现在,假设我们想访问(引用)这个数据结构中的数字 3。我们可以使用一个索引像这样来做到:

> a[2]
3

对于向量,这个逻辑也是一样的。

再举一个例子,假设我们有这样一个二维数组:

> dd = [
[1,2,3],
[4,5,6],
[7,8,9]
]

现在,假设我们想访问(引用)这个数据结构中的数字 3。在这种情况下,我们需要两个索引来定位特定元素。

> dd[0][2]
3

对于矩阵,这个逻辑也是一样的。

请注意,如果我们有一个数字或标量,我们不需要索引,我们可以直接引用数字或标量。

这为我们提供了所需的工作知识,因此我们现在准备好进行概括。

张量是概括

让我们看看当我们考虑的这些数据结构需要超过两个索引来访问(引用)特定元素时会发生什么。

​​在这里插入图片描述

当需要超过两个索引来访问特定元素时,我们停止给结构特定名称,并开始使用更一般的语言。

数学

在数学中,我们停止使用标量、向量和矩阵等词,我们开始使用 张量 或 nd-张量这个词。n告诉我们访问结构中特定元素所需的索引数量。

计算机科学

在计算机科学中,我们停止使用数字、数组、二维数组等词,开始使用 多维数组 或 nd-数组这个词。n 告诉我们访问结构中特定元素所需的索引数量。

访问元素所需的索引计算机科学数学
nnd-数组nd-张量

让我们澄清一下。对于神经网络编程的实际目的,张量和 nd-数组是一样的。

张量和 nd-数组是同一件事!

因此,张量是多维数组或简称为 nd-数组。我们说张量是概括的原因是我们对所有 \(n\) 的值使用张量这个词,如下所示:

  • 标量是 0维张量
  • 向量是 1维张量
  • 矩阵是 2 维张量
  • nd-数组是 n维张量

张量让我们可以丢弃这些具体术语,只用一个 n 来识别我们正在处理的维度数量。

关于张量维度需要注意的一点是,它与我们在向量空间中提到向量的维度时的含义不同。张量的维度并没有告诉我们张量内存在多少个分量。

如果我们有一个来自三维欧几里得空间的三维向量,我们有一个有序三元组,包含三个分量。

然而,三维张量可以有远多于三个分量。例如,我们的二维张量 dd​ 有九个分量。

> dd = [
[1,2,3],
[4,5,6],
[7,8,9]
]

总结

在下一篇文章中,当我们介绍秩、轴和形状的概念时,我们将看到如何确定张量内包含的分量数量。这些是我们使用的基本张量属性。


http://www.ppmy.cn/news/1562193.html

相关文章

Redis 安装与 Spring Boot 集成指南

安装 Redis 和将其与 Spring Boot 应用集成是构建高效缓存解决方案的常见步骤。以下是详细的指南,帮助你在本地环境中安装 Redis,并在 Spring Boot 项目中配置和使用它。 1. 安装 Redis Windows 环境 Redis 官方并不直接支持 Windows,但你…

51单片机 和 STM32 在硬件操作上的差异

51单片机 和 STM32 在硬件操作上的差异 1. 时钟系统的差异 STM32 的时钟系统 STM32 的时钟系统非常复杂,支持多种时钟源(如内部晶振、外部晶振、PLL 等),并且每个外设(如 GPIO、定时器、串口等)都有独立的…

Kafka集群安装

Apache kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,是消息中间件的一种,用于构建实时数据管道和流应用程序。 Kafka官网:http://kafka.apache.org/ 安装环境: Kafka集群环境搭建,依赖于zookeep…

实时数仓:基于数据湖的实时数仓与数据治理架构

设计一个基于数据湖的实时数仓与数据治理架构,需要围绕以下几个核心方面展开:实时数据处理、数据存储与管理、数据质量治理、数据权限管理以及数据消费。以下是一个参考架构方案: 一、架构整体概览 核心组成部分 数据源层 数据来源&#xff…

软件系统安全逆向分析-混淆对抗

1. 概述 在一般的软件中,我们逆向分析时候通常都不能直接看到软件的明文源代码,或多或少存在着混淆对抗的操作。下面,我会实践操作一个例子从无从下手到攻破目标。 花指令对抗虚函数表RC4 2. 实战-donntyousee 题目载体为具有漏洞的小型软…

R语言的网络编程

R语言的网络编程 引言 随着互联网的迅速发展,网络编程已经成为一个重要的研究和应用领域。各种数据的获取、处理和分析都离不开网络编程,尤其是在大数据时代。R语言作为一种专注于统计分析和数据处理的编程语言,在网络编程方面同样展现了其…

【gRPC】一元请求与流式请求的go案例展示

简述区别 请求类型方法名描述示例场景一元请求UnaryEcho客户端发送单个请求,服务端返回单个响应。简单查询或操作服务端流ServerStreamingEcho客户端发送单个请求,服务端返回一个流的响应。分页、持续更新客户端流ClientStreamingEcho客户端发送一个流的…

排序的本质、数据类型及算法选择

排序的本质、数据类型及算法选择 一、排序的本质二、排序的数据类型三、排序算法的选择依据 前两天老金写了篇 “十大排序简介”,有点意犹未尽,这一回老金想把排序连根拔起,从排序的本质说道说道。 一、排序的本质 从字面上理解&#xff0c…