一文解读Tensor到底是个啥玩意儿?(附代码)

简介:

尽管理论上和实践中的张量(tensors)有一些细微差别,我们仍然能给出这样的定义:一个张量就是一个可以容纳N维数据及其线性操作的容器。

机器学习中的数据通常需要处理为数值型的。特别地,当我们特指神经网络中的数据表示时,通常会提到所谓的张量。一个张量就是一个可以容纳N维数据的容器。很多时候,人们会把它和matrix错误地混用(matrix特指2维的张量),张量是matrix在N维空间的一般形式。

数学上讲,张量不仅仅是一个数据容器,除了保存数值型数据,它也包括张量之间合法的线性变换。这种变换的例子如:叉积(cross product)和点积(dot product)。从计算机科学的角度看,把张量理解成面向对象中的对象而不是简单的一个数据结构会更有帮助。

(译者注:因为作者提到张量不仅包含数据,而且包含相应的操作,这与我们在面向对象编程中的约定是一致的,所以作者更建议理解成是对象。)

虽然上面的描述都是正确的,但理论上和机器学习实践中所指的张量还是会有细微差别。我们暂时简单地将他们视为数据结构,下图概括了张量和标量、向量跟矩阵的关系,以及如何用Numpy创建各种数据类型的代码。在随后的帖子中我们还会看看张量的变换。

1a3bd25a1bf5c6aa0bbd5dc30088fe82de9d2253

标量

单个数字就是一个标量。标量是一个0维的张量。因此,它具有0个轴,并且秩为0。

这就是细微差别出现的地方,尽管单个数字可以表示为张量,但并不是说它就应该是张量或者通常是张量。我们有足够的理由把数字视为张量(讨论张量的操作时会看到),但作为一种存储机制,这种表示会让人困惑。

下面的代码中,Numpy的多维数组ndarray被用来创建刚才讨论的示例结构。回忆一下,多维数组的ndim属性返回数组的维数。

import numpy as np

x = np.array(42)

print(x)

print('A scalar is of rank %d' %(x.ndim))

42

A scalar is of rank 0

向量

向量是1维的张量,在计算机科学中经常把它叫做数组。向量由一串数字组成,具有1个轴,并且秩为1。

x = np.array([1, 1, 2, 3, 5, 8])

print(x)

print('A vector is of rank %d' %(x.ndim))

[1 1 2 3 5 8]

A vector is of rank 1

矩阵

矩阵是秩为2的张量,即它有两个轴。在各种场景你都能熟悉这个概念,尤其是把数据喂给你的scikit-learn机器学习模型时。矩阵就是把数字放入网格内(想象行和列),是一个2维的张量。

x = np.array([[1, 4, 7],

[2, 5, 8],

[3, 6, 9]])

print(x)

print('A matrix is of rank %d' %(x.ndim))

[[1 4 7]

[2 5 8]

[3 6 9]]

A matrix is of rank 2

三维张量(及更高的维度)

严格来说,上述结构都是合法的张量。通常谈到张量时,都是将矩阵的概念推广到N>=3维。为了避免混淆,我们通常只把3维或更高维度的张量称为张量(通常而言,把标量‘42’称为张量没什么好处,只会让人困惑)。

x = np.array([[[1, 4, 7],

[2, 5, 8],

[3, 6, 9]],

[[10, 40, 70],

[20, 50, 80],

[30, 60, 90]],

[[100, 400, 700],

[200, 500, 800],

[300, 600, 900]]])

print(x)

print('This tensor is of rank %d' %(x.ndim))

[[[ 1 4 7]

[ 2 5 8]

[ 3 6 9]]

[[ 10 40 70]

[ 20 50 80]

[ 30 60 90]]

[[100 400 700]

[200 500 800]

[300 600 900]]]

This tensor is of rank 3

怎么用张量是你自己的事情。尽管如此,理解什么是张量以及它跟数字容器结构的关系现在应该很清楚了。


原文发布时间为:2018-06-13

本文作者:数据派

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”。

相关文章
|
机器学习/深度学习 存储 数据采集
阿里云 ACP是什么?阿里云 ACP有什么用?
ACP是什么,它是阿里云企业推出的针对于数据分析工程师的资格认证,有极高的含金量。因为阿里云在国内市场处于领先地位,他们推出的资格认证自然而然受到很多人的欢迎,很多互联网行业从业人员都以获得阿里ACP认证为荣。那么,阿里云 ACP是什么?阿里云 ACP有什么用?在认证大使官网上查阅了相关资料,我得到了答案
3177 0
阿里云 ACP是什么?阿里云 ACP有什么用?
|
机器学习/深度学习 算法 数据处理
Data Masking:线上数据线下使用的数据处理方法
数据脱敏,Data Masking:线上数据线下使用的数据处理方法
261 5
Data Masking:线上数据线下使用的数据处理方法
|
7月前
|
SQL 存储 数据库
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
1213 0
|
Python
Python 项目及依赖管理工具技术选型
【8月更文挑战第30天】在进行Python项目及依赖管理时,有多种工具可供选择。虚拟环境工具有`virtualenv`和内置的`venv`,可为项目创建独立环境,避免依赖冲突。依赖管理工具有`pip`、`pipenv`和`poetry`,分别用于安装包、管理依赖并确保版本一致性。选型时需考虑项目需求、团队协作、易用性和社区支持等因素。
470 10
|
Linux C语言 Python
perf_event_open 学习 —— 通过read的方式读取硬件技术器
perf_event_open 学习 —— 通过read的方式读取硬件技术器
|
12月前
|
数据采集 人工智能 自然语言处理
《深度融合:DeepSeek无缝嵌入现有业务系统全攻略》
在数字化转型中,企业利用人工智能提升效率和创新能力。DeepSeek作为强大的大语言模型,以其出色的推理能力为企业带来新机遇。集成DeepSeek需经过系统评估、需求分析和技术选型,选择API调用或私有化部署。通过接口对接、数据预处理和模型优化,逐步实现深度融合。最后,进行全面测试确保集成效果,为企业业务创新注入强大动力。
1215 0
|
存储 NoSQL MongoDB
MongoDB 概念解析
10月更文挑战第12天
336 0
MongoDB 概念解析
|
Oracle 关系型数据库 MySQL
OceanBase 与传统数据库的对比
【8月更文第31天】随着云计算和大数据技术的发展,分布式数据库因其高扩展性、高可用性和高性能而逐渐成为企业和开发者关注的焦点。在众多分布式数据库解决方案中,OceanBase作为一个由阿里巴巴集团自主研发的分布式数据库系统,以其独特的架构设计和卓越的性能表现脱颖而出。本文将深入探讨OceanBase与其他常见关系型数据库管理系统(如MySQL、Oracle)之间的关键差异,并通过具体的代码示例来展示这些差异。
1573 1
|
机器学习/深度学习 人工智能 自然语言处理
《零基础实践深度学习》1.4.1飞桨产业级深度学习开源开放平台介绍
这篇文章详细介绍了飞桨(PaddlePaddle)这一产业级深度学习开源开放平台,阐述了其在深度学习领域的广泛应用和重要性,以及飞桨平台的核心框架、开发套件、工具组件和预训练模型等,旨在帮助开发者快速实现AI想法并推动产业智能化升级。
|
存储 缓存 Linux
探秘Linux块设备驱动程序:成为内核开发大师的第一步
探秘Linux块设备驱动程序:成为内核开发大师的第一步
1260 1