张量Tensor [机器学习的数学基础]
Posted TerryBlog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了张量Tensor [机器学习的数学基础]相关的知识,希望对你有一定的参考价值。
1、张量是什么
当前的机器学习模型基本都使用张量(Tensor)作为基本的数据结构,与数组和矩阵非常相似。在PyTorch中,我们使用张量来编码一个模型的输入和输出,以及模型的参数。
张量(Tensor)与NumPy的ndarrays类似,但是张量可以在GPU或其他硬件加速器上运行。事实上,张量和NumPy数组通常可以共享相同的底层内存(应该是属于引用拷贝),不需要复制数据,直接使用torch.from_numpy()
转换即可。
2、张量的属性
- 轴(阶):向量有1个轴,矩阵有2个轴,3D张量有3个轴。在NumPy里用ndarray的ndim属性表示。
- 形状:这是一个整数元组,在Python中通常用shape属性表示张量沿着每个轴的维度大小(元素个数)。例如,矩阵的形状可表示为(2,6);3D张量的形状可表示为(40,2,6);向量为(6,),而标量的形状为空,即()。
- 数据类型:张量中包含的数据类型,在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)的张量中。
图像张量的形状有两种约定:
- 通道在后(channels-last)的约定:Google的TensorFlow机器学习框架将颜色深度轴放在最后(samples,height,width,color_depth)。
- 通道在前(channels-first)的约定:与1相反,Theano框架将图像深度轴放在批量轴之后(samples,color_depth,height,width)。如果采用Theano约定,前面的两个例子将变成(512,1,256,256)和(512,3,256,256)。
值得注意的是,Keras框架同时支持这两种格式。
3.4 视频
侵删!如有错误还请指正,不定期更新,觉得不错的话请给个赞吧~
以上是关于张量Tensor [机器学习的数学基础]的主要内容,如果未能解决你的问题,请参考以下文章