张量Tensor [机器学习的数学基础]

Posted TerryBlog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了张量Tensor [机器学习的数学基础]相关的知识,希望对你有一定的参考价值。

1、张量是什么

  当前的机器学习模型基本都使用张量(Tensor)作为基本的数据结构,与数组和矩阵非常相似。在PyTorch中,我们使用张量来编码一个模型的输入和输出,以及模型的参数。
  张量(Tensor)与NumPy的ndarrays类似,但是张量可以在GPU或其他硬件加速器上运行。事实上,张量和NumPy数组通常可以共享相同的底层内存(应该是属于引用拷贝),不需要复制数据,直接使用torch.from_numpy()转换即可。

2、张量的属性

  1. 轴(阶):向量有1个轴,矩阵有2个轴,3D张量有3个轴。在NumPy里用ndarrayndim属性表示。
  2. 形状:这是一个整数元组,在Python中通常用shape属性表示张量沿着每个轴的维度大小(元素个数)。例如,矩阵的形状可表示为(2,6);3D张量的形状可表示为(40,2,6);向量为(6,),而标量的形状为空,即()。
  3. 数据类型:张量中包含的数据类型,在Python中通常用dtype属性表示(float64、float32…)。

3、常见的几种数据张量

  通常来说,深度学习中所有数据张量的第一个轴(0轴)都是样本轴(也称样本维度)。由于深度学习通常不会同时处理整个数据集,而是会将数据拆分成小批量进行输入训练。对于这种批量张量(batch tensor),第一个轴叫作批量轴(batch axis)或批量维度

序号数据类型张量类型形状
1向量数据2D张量(samples,feature)
2时间序列数据或序列数据3D张量(samples,timesteps,feature)
3图像4D张量(samples,height,width,channels)or(samples,channels,height,width)
4视频5D张量(samples,frames,height,width,channels)or(samples,frames,channels,height,width)

  接下来,一起看一下 python深度学习(第二版) 提供的例子,以上内容也均参考总结自此书:

3.1 向量数据

3.2 时间序列数据或序列数据

3.3 图像

  图像通常具有三个维度:高度、宽度和颜色深度。虽然灰度图像(比如MNIST 数字图像)只有一个颜色通道,因此可以保存在2D张量中。但按照惯例,图像张量始终都是3D张量,灰度图像的彩色通道只有一维。因此,如果图像大小为 256 × 256 256\\times256 256×256,那么512张灰度图像组成的批量可以保存在一个形状为(512,256,256,1)的张量中,而相同数量的彩色图像可以保存在一个形状为(512,256,256,3)的张量中。
  图像张量的形状有两种约定:

  1. 通道在后(channels-last)的约定:Google的TensorFlow机器学习框架将颜色深度轴放在最后(samples,height,width,color_depth)。
  2. 通道在前(channels-first)的约定:与1相反,Theano框架将图像深度轴放在批量轴之后(samples,color_depth,height,width)。如果采用Theano约定,前面的两个例子将变成(512,1,256,256)和(512,3,256,256)。

  值得注意的是,Keras框架同时支持这两种格式。

3.4 视频

侵删!如有错误还请指正,不定期更新,觉得不错的话请给个赞吧~

以上是关于张量Tensor [机器学习的数学基础]的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch : 了解Tensor(张量)及其创建方法

机器学习编译入门课程学习笔记第二讲 张量程序抽象

TensorFlow——机器学习编程框架

李宏毅机器学习 p5(pytorch 1)学习笔记

黄佳《零基础学机器学习》chap2笔记

Python机器学习基础知识和相关术语