一、啥是张量?也许你刚刚对深度学习有了基本的了解,于是满心欢喜的下载了tensorflow,准备开始搭建你的第一个神经网络。但是,一个叫张量的东西让你产生了疑惑,这是啥?张量本身是一个数学概念。你可能对于标量和向量非常熟悉了,但是,当我们想用数学语言去描述一个高维数据时,变量和向量就显得力不从心了,所以张量的概念应运而生。事实上,张量本身是标量和向量概念的延伸。python中一个张量通常被保存为numpy数组,numpy也被应用于大部分的机器学习框架中。 我们可以把标量看成零阶张量: import numpy as npx = np.array(5)print(x) 输出:5 向量看成一阶张量: x = np.array([1, 2, 3, 4])print(x) 输出:[1 2 3 4] 同样的,把矩阵可以看成二阶张量: x = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])print(x) 输出:[[1 2 3 4] [5 6 7 8]] 理论上张量可以延伸到n维数据: 二、深度学习中的定义在深度学习领域我们完全可以把张量等同于一个数据的容器,或者干脆想象成要一个水桶。当水桶中只放了一滴水时就是0维张量,多滴水排成一排就是1维张量,联排成面就变成了2维张量,依此类推,可以扩展到n维。这样做的好处就是极大方便了数据的处理。 三、如何应用假设一个地区有10000人,我们要把所有的居民信息存储到计算机中,包括姓名、性别、年龄、职业、家庭住址、受教育程度、婚否这7个特征。这时可以定义一个(10000,7)的二维数组来存储信息。然后,我们可以定义一个张量来装这个数组,同时张量的最大维度也被定义成了(10000,7)。如果我们需要存储10个地区的数据就可以定义一个3维张量,它的维度是(10,10000,7)。 一张图片可以用3维张量来表示:(width, height, depth)。但是,通常情况下我们会处理一个包含多张图片的数据集,这时就需要用4维张量来表示:(num,width, height, depth)。num维度代表图片的数量。 一张图片: 图片数据集: 5维张量可以用来存储视频,在tensorflow中是这样定义的:(sample_size, frames, width, height, color_depth)。假如我们有5段视频,每段有1000帧,每帧长为1920,宽为1080,颜色深度为3。那么可以表示为(5,1000,1920,1080,3)。 |
|