机器学习的张量概念解析

电子说

1.4w人已加入

描述

一、啥是张量?

也许你刚刚对深度学习有了基本的了解,于是满心欢喜的下载了tensorflow,准备开始搭建你的第一个神经网络。但是,一个叫张量的东西让你产生了疑惑,这是啥?张量本身是一个数学概念。你可能对于标量和向量非常熟悉了,但是,当我们想用数学语言去描述一个高维数据时,变量和向量就显得力不从心了,所以张量的概念应运而生。事实上,张量本身是标量和向量概念的延伸。python中一个张量通常被保存为numpy数组,numpy也被应用于大部分的机器学习框架中。

我们可以把标量看成零阶张量:

import numpy as np
x = 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)。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分