一般来说,当前所有机器学习系统都使用张量作为基本数据结构。
张量的核心在于,它是一个数据容器。它包含的数据几乎总是数值数据,因此它是数字的容器。如矩阵,它是二维张量。张量是矩阵向任意维度的推广。【注意:张量的维度(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——神经网络数据的表示相关推荐
- 【MindSpore深度学习框架】MindSpore中的张量Tensor
文章目录 一.Tensor是什么 二.构造张量 三.Tensor的运算.属性.方法 1.运算 2.属性 3.方法 欢迎回到MindSpore神经网络编程系列.在这篇文章中,我们将通过MindSpore ...
- Pytorch入门之张量tensor
一.张量tensor 张量的三个特征:秩.轴.形状 张量的秩是指索引的个数,轴是指每一个维度的最大的索引的值,张量的形状提供了维度和索引的数量关系. 经常需要对张量进行重塑 t.reshape(1,9 ...
- Pytorch张量tensor的使用
1. 张量Tensor Tensors张量: 张量的概念类似于Numpy中的ndarray数据结构, 最大的区别在于Tensor可以利用GPU的加速功能. 张量是一个统称,其中包含很多类型: [各 ...
- 什么是张量 (tensor)?
在TensorFlow 官方文档中文版中学习cifar10时,对张量Tensor的概念一知半解,特别在理解代码如何批量读取图片,如何实现卷积的细节困扰了我好几天,在查询网上的资料后总结如下: 一.Te ...
- Tensorflow:张量(Tensor)的创建及其基础操作
Tensorflow版本:V2.8.0 Tensorflow中所有的运算操作都是基于张量进行的.Tensorflow中的张量Tensor是具有统一类型的多维数组.这篇博文主要介绍张量的创建及基础操 ...
- pytorch 张量tensor 转为 jpg 图片
在用pytorch训练网络的时候,每一张图片都被转为了张量形式的数据,有时候我们需要将这些张量转为jpg格式的图片,应该如何转变呢?我们只要将张量tensor转为PIL格式的数据,然后再将数据保存起来 ...
- tensor转换为图片_pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
1, 创建pytorch 的Tensor张量: torch.rand((3,224,224)) #创建随机值的三维张量,大小为(3,224,224) torch.Tensor([3,2]) #创建张量 ...
- pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换 1, 创建pytorch 的Tensor张量: torch.rand((3,224,224)) #创建随机值的三维张量,大小为 ...
- 基于灰狼算法优化的Elman神经网络数据预测
基于灰狼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于灰狼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
最新文章
- 获得汉字字符串拼音首字母
- Debug不崩溃Release版本崩溃的一种原因
- 浪潮信息:企业互联网化下的数据平台升级 | 云·创课程实录
- python3.7.2安装-ubuntu下编译安装Python3.7.2
- 【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )
- Jquery的事件操作和文档操作
- ***从菜鸟到大虾教程下载
- Percona XtraBackup User Manual 阅读笔记
- Spring Cloud实战Zuul统一异常处理
- 64位Win7下安装Oracle11gr2以及PL/sql(32位)安装
- 21 个令程序员泪流满面的瞬间
- 网页提示404什么意思
- gff3转mysql_PASA的使用
- gmail+mtalk配合打免费网络电话。
- datax——全量、增量同步
- 安防互联网摄像头海康大华硬盘录像机视频流媒体服务器EasyNVR在layer弹出层中使用video标签无法最大化全屏播放问题解决
- 507. Perfect Number
- 云客网:企业网站SEO优化方案实例
- 广工的计算机硕士全国排名s,2021年广东工业大学排名,附全国最新排名
- Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds
热门文章
- 【visdom绘图】深度学习中Visdom绘图的总结
- rust低配设置图片_西部题材生存玩法,Steam这款免费游戏疑似低配版大表哥2?...
- 【pyqt5学习】——登录界面跳转到主界面,登录界面关闭的情况下从主界面跳转回登录界面
- GNSS时间时区转换
- 3D模型欣赏:动漫女孩角色设计Zbrush雕刻
- python url解析_python——urlparse:解析url
- FastJson应用与高性能优化
- Video321(高清录屏)-团队管理案例分享
- HP电脑上Edge浏览器卡顿问题解决
- Windows上的bitlocker加密怎么解除?