绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
机器学习概念解析之张量
2019-12-11 16:21:15

一、啥是张量?

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

分享好友

分享这个小栈给你的朋友们,一起进步吧。

通俗易懂--机器学习
创建时间:2019-08-02 11:00:07
这里汇集了机器学习、NLP面试中常考到的知识点和代码实现,也是作为一个算法工程师必会的理论基础知识。 以各个模块为切入点,让大家有一个清晰的知识体系。 亦可拿来常读、常记以及面试时复习之用。 每一章里的问题都是面试时有可能问到的知识点,如有遗漏可联系我进行补充,结尾处都有算法的实战代码案例。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • mantch
    栈主

小栈成员

查看更多
  • 栈栈
  • Jack2k
  • hwayw
  • 天上飘下来的人
戳我,来吐槽~