分享

机器学习概念解析之张量

 汉无为 2019-10-29

一、啥是张量?

也许你刚刚对深度学习有了基本的了解,于是满心欢喜的下载了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)。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多