一般来说,当前所有机器学习系统都使用张量作为基本数据结构。

张量的核心在于,它是一个数据容器。它包含的数据几乎总是数值数据,因此它是数字的容器。如矩阵,它是二维张量。张量是矩阵向任意维度的推广。【注意:张量的维度(dimension)通常叫做轴(axis)】

一、不同维度张量介绍

1.1、标量(0D张量)

仅包含一个数字的张量叫作标量(scalar,也叫标量张量、零维张量、0D 张量)。在 Numpy 中,一个 float32 或 float64 的数字就是一个标量张量(或标量数组)。
可以用ndim属性来查看一个Numpy张量的轴的个数。标量张量有0个轴(ndim==0).张量轴的个数也叫作阶(rank).
1.2、向量(1D张量)
数字组成的数组叫做向量(vector)或一维张量(1D张量)。一维张量只有一个轴。
这个向量有 5 个元素,所以被称为 5D 向量。不要把 5D 向量和 5D 张量弄混! 5D 向量只有一个轴,沿着轴有 5 个维度,而 5D 张量有 5 个轴(沿着每个轴可能有任意个维度)。维度 (dimensionality)可以表示沿着某个轴上的元素个数(比如 5D 向),也可以表示张量中轴的个 数(比如 5D 张量),这有时会令人感到混乱。对于后一种情况,技术上更准确的说法是 5 阶张量 (张量的阶数即轴的个数),但 5D 张量这种模糊的写法更常见。
1.3、矩阵(2D张量)
向量组成的数组叫做矩阵(matrix)或二维张量(2D张量)。矩阵有2个轴(通常叫做行和列)。
第一个轴上的元素叫做行(row),第二个轴上的元素叫做列(column).
1.4、3D张量与更高维张量
将多个矩阵组合成一个新的数组,可以得到一个3D张量。
将多个3D张量组合成一个数组,可以创建一个4D张量,以此类推。深度学习处理的一般是0D到4D的张量,但处理视频 数据时可能会遇到5D张量。
二、关键属性
张量是由以下三个关键属性定义的。
1)轴的个数(阶)。例如,3D张量有3个轴,矩阵有2个轴。
2)形状。这是一个整数元组,表示张量沿着每个维度的大小(元素个数)。例如,上面示例中矩阵的形状为(3, 5),3D张量示例的形状为(3,3,5)。向量的形状只包含一个元素,比如(5,),而标量的形状为空,即()。
3)数据类型(在Python库中通常叫做dtype)。这是张量中所包含数据的类型,例如,张量的类型可以是 float32、uint8、float64 等。在极少数情况下,你可能会遇到字符(char)张量。注意,Numpy(以及大多数其他库)中不存在字符串张量,因为张量存

储在预先分配的连续内存段中,而字符串的长度是可变的,无法用这种方式存储。

三、现实世界中的数据张量
1)向量数据:2D张量,形状为(samples, features)。
2)时间序列数据或序列数据:3D张量,形状为(samples,timestamps,features)。
3)图像:4D张量,形状为(samples, height,width,channels)或(samples,channels,height,width)。
4)视频:5D张量,形状为(samples,frames, height,width,channels)或(samples,frames,channels,height,width)。
3.1各张量示例
3.1.1 向量数据
这是最常见的数据。对于这种数据集,每个数据点都被编码为一个向量,因此一个数据批 量就被编码为 2D 张量(即向量组成的数组),其中第一个轴是样本轴,第二个轴是特征轴。
例子:
人口统计数据集,其中包括每个人的年龄、邮编和收入。每个人可以表示为包含 3 个值 的向量,而整个数据集包含 100 000 个人,因此可以存储在形状为 (100000, 3) 的 2D 张量中。
3.1.2 时间序列或序列数据
当时间(或序列顺序)对于数据很重要时,应该将数据存储在带有时间轴的 3D 张量中。 每个样本可以被编码为一个向量序列(即 2D 张量),因此一个数据批量就被编码为一个 3D 张 量。
例子:
股票价格数据集。每一分钟,我们将股票的当前价格、前一分钟的最高价格和前一分钟 的最低价格保存下来。因此每分钟被编码为一个 3D 向量,整个交易日被编码为一个形 状为 (390, 3) 的 2D 张量(一个交易日有 390 分钟),而 250 天的数据则可以保存在一 个形状为 (250, 390, 3) 的 3D 张量中。这里每个样本是一天的股票数据。
3.1.3 图像数据
图像通常具有三个维度:高度、宽度和颜色深度。虽然灰度图像(比如 MNIST 数字图像) 只有一个颜色通道,因此可以保存在 2D 张量中,但按照惯例,图像张量始终都是 3D 张量,灰 度图像的彩色通道只有一维。因此,如果图像大小为 256×256,那么 128 张灰度图像组成的批 量可以保存在一个形状为 (128, 256, 256, 1) 的张量中,而 128 张彩色图像组成的批量则可以保存在一

个形状为 (128, 256, 256, 3) 的张量中。
图像张量的形状有两种约定:通道在后(channels-last)的约定(在 TensorFlow 中使用)和 通道在前(channels-first)的约定(在 Theano 中使用)。Google 的 TensorFlow 机器学习框架将 颜色深度轴放在最后:(samples, height, width, color_depth)。与此相反,Theano 将图像深度轴放在批量轴之后:(samples, color_depth, height, width)。如果采 用 Theano 约定,前面的两个例子将变成 (128, 1, 256, 256) 和 (128, 3, 256, 256)。 Keras 框架同时支持这两种格式。
3.1.4 视频数据
视频数据是现实生活中需要用到 5D 张量的少数数据类型之一。视频可以看作一系列帧, 每一帧都是一张彩色图像。由于每一帧都可以保存在一个形状为 (height, width, color_ depth) 的 3D 张量中,因此一系列帧可以保存在一个形状为 (frames, height, width, color_depth) 的 4D 张量中,而不同视频组成的批量则可以保存在一个 5D 张量中,其形状为 (samples, frames, height, width, color_depth)。
例子:
举个例子,一个以每秒 4 帧采样的 60 秒 YouTube 视频片段,视频尺寸为 144×256,这个 视频共有 240 帧。4 个这样的视频片段组成的批量将保存在形状为 (4, 240, 144, 256, 3) 的张量中。总共有 106 168 320 个值!如果张量的数据类型(dtype)是 float32,每个值都是 32 位,那么这个张量共有 405MB。好大!你在现实生活中遇到的视频要小得多,因为它们不以 float32 格式存储,而且通常被大大压缩,比如 MPEG 格式。

张量tensor——神经网络数据的表示相关推荐

  1. 【MindSpore深度学习框架】MindSpore中的张量Tensor

    文章目录 一.Tensor是什么 二.构造张量 三.Tensor的运算.属性.方法 1.运算 2.属性 3.方法 欢迎回到MindSpore神经网络编程系列.在这篇文章中,我们将通过MindSpore ...

  2. Pytorch入门之张量tensor

    一.张量tensor 张量的三个特征:秩.轴.形状 张量的秩是指索引的个数,轴是指每一个维度的最大的索引的值,张量的形状提供了维度和索引的数量关系. 经常需要对张量进行重塑 t.reshape(1,9 ...

  3. Pytorch张量tensor的使用

    1. 张量Tensor Tensors张量: 张量的概念类似于Numpy中的ndarray数据结构, 最大的区别在于Tensor可以利用GPU的加速功能. 张量是一个统称,其中包含很多类型:   [各 ...

  4. 什么是张量 (tensor)?

    在TensorFlow 官方文档中文版中学习cifar10时,对张量Tensor的概念一知半解,特别在理解代码如何批量读取图片,如何实现卷积的细节困扰了我好几天,在查询网上的资料后总结如下: 一.Te ...

  5. Tensorflow:张量(Tensor)的创建及其基础操作

    Tensorflow版本:V2.8.0   Tensorflow中所有的运算操作都是基于张量进行的.Tensorflow中的张量Tensor是具有统一类型的多维数组.这篇博文主要介绍张量的创建及基础操 ...

  6. pytorch 张量tensor 转为 jpg 图片

    在用pytorch训练网络的时候,每一张图片都被转为了张量形式的数据,有时候我们需要将这些张量转为jpg格式的图片,应该如何转变呢?我们只要将张量tensor转为PIL格式的数据,然后再将数据保存起来 ...

  7. tensor转换为图片_pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换

    1, 创建pytorch 的Tensor张量: torch.rand((3,224,224)) #创建随机值的三维张量,大小为(3,224,224) torch.Tensor([3,2]) #创建张量 ...

  8. pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换

    pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换 1, 创建pytorch 的Tensor张量: torch.rand((3,224,224)) #创建随机值的三维张量,大小为 ...

  9. 基于灰狼算法优化的Elman神经网络数据预测

    基于灰狼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于灰狼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

最新文章

  1. 获得汉字字符串拼音首字母
  2. Debug不崩溃Release版本崩溃的一种原因
  3. 浪潮信息:企业互联网化下的数据平台升级 | 云·创课程实录
  4. python3.7.2安装-ubuntu下编译安装Python3.7.2
  5. 【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )
  6. Jquery的事件操作和文档操作
  7. ***从菜鸟到大虾教程下载
  8. Percona XtraBackup User Manual 阅读笔记
  9. Spring Cloud实战Zuul统一异常处理
  10. 64位Win7下安装Oracle11gr2以及PL/sql(32位)安装
  11. 21 个令程序员泪流满面的瞬间
  12. 网页提示404什么意思
  13. gff3转mysql_PASA的使用
  14. gmail+mtalk配合打免费网络电话。
  15. datax——全量、增量同步
  16. 安防互联网摄像头海康大华硬盘录像机视频流媒体服务器EasyNVR在layer弹出层中使用video标签无法最大化全屏播放问题解决
  17. 507. Perfect Number
  18. 云客网:企业网站SEO优化方案实例
  19. 广工的计算机硕士全国排名s,2021年广东工业大学排名,附全国最新排名
  20. Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds

热门文章

  1. 【visdom绘图】深度学习中Visdom绘图的总结
  2. rust低配设置图片_西部题材生存玩法,Steam这款免费游戏疑似低配版大表哥2?...
  3. 【pyqt5学习】——登录界面跳转到主界面,登录界面关闭的情况下从主界面跳转回登录界面
  4. GNSS时间时区转换
  5. 3D模型欣赏:动漫女孩角色设计Zbrush雕刻
  6. python url解析_python——urlparse:解析url
  7. FastJson应用与高性能优化
  8. Video321(高清录屏)-团队管理案例分享
  9. HP电脑上Edge浏览器卡顿问题解决
  10. Windows上的bitlocker加密怎么解除?