你真的懂TensorFlow吗?Tensor是神马?为什么还会Flow?

本文的ipynb 格式见CSDN下载。

0维张量/标量
标量是一个数字
1维张量/向量
1维张量称为“向量”。
2维张量
2维张量称为矩阵
3维张量
公用数据存储在张量
时间序列数据
股价
文本数据
图片
彩色图片
5D张量
结论

实际上,你可以使用一个数字的张量,我们称为0维张量,也就是一个只有0维的张量。
它仅仅只是带有一个数字的水桶。想象水桶里只有一滴水,那就是一个0维张量。

import numpy as np
x = np.array(5)
print(x)

1维张量/向量,1维张量称为“向量”

x = np.array([1,2,3,4])
print(x)
#通过NumPy’s ndim函数,查看张量具有多个坐标轴。
x.ndim

2维张量

x = np.array([[5,10,15,30,25],[20,30,65,70,90],[7,80,95,20,30]])
print(x)
x.ndim

3维张量

一个3维张量是一个数字构成的立方体


y = np.array([[[5,10,15,30,25],[20,30,65,70,90],[7,80,95,20,30]],[[3,0,5,0,45],[12,-2,6,7,90],[34,3436,4364,3434,566]],[[17,13,25,30,15],[23,36,9,7,80],[1,-7,-5,22,3]]])
print(y)
y.ndim

3维=时间序列

4维=图像

5维=视频

一个图像可以用三个字段表示:

(width, height, color_depth) = 3D
(sample_size, width, height, color_depth) = 4D

时间序列数据

用3D张量来模拟时间序列会非常有效!

医学扫描——我们可以将脑电波(EEG)信号编码成3D张量,因为它可以由这三个参数来描述:

(time, frequency, channel)

这种转化看起来就像这样:
如果我们有多个病人的脑电波扫描图,那就形成了一个4D张量:

 (sample_size, time, frequency, channel)

纽交所开市时间从早上9:30到下午4:00,即6.5个小时,总共有6.5 x 60 = 390分钟。
如此,我们可以将每分钟内最高、最低和最终的股价存入一个2D张量(390,3)。如果我们追踪一周(五天)的交易,我们将得到这么一个3D张量:

(week_of_data, minutes, high_low_price)

即:(5,390,3)
同理,如果我们观测10只不同的股票,观测一周,我们将得到一个4D张量
(10,5,390,3)
假设我们在观测一个由25只股票组成的共同基金,其中的每只股票由我们的4D张量来表示。那么,这个共同基金可以有一个5D张量来表示:
(25,10,5,390,3)

文本数据

我们也可以用3D张量来存储文本数据,我们来看看推特的例子。

首先,推特有140个字的限制。其次,推特使用UTF-8编码标准,这种编码标准能表示百万种字符,
但实际上我们只对前128个字符感兴趣,因为他们与ASCII码相同。所以,一篇推特文可以包装成一个2D向量:
(140,128)
如果我们下载了一百万篇川普哥的推文(印象中他一周就能推这么多),我们就会用3D张量来存:

(number_of_tweets_captured, tweet, character)

这意味着,我们的川普推文集合看起来会是这样:
(1000000,140,128)

图片

4D张量很适合用来存诸如JPEG这样的图片文件。之前我们提到过,一张图片有三个参数:高度、宽度和颜色深度。
一张图片是3D张量,一个图片集则是4D,第四维是样本大小。

MNIST图片是黑白的,这意味着它们可以用2D张量来编码,但我们习惯于将所有的图片用3D张量来编码,多出来的第三个维度代表了图片的颜色深度。
MNIST数据集有60,000张图片,它们都是28 x 28像素,它们的颜色深度为1,即只有灰度。
TensorFlow这样存储图片数据:

(sample_size, height, width, color_depth)

于是我们可以认为,MNIST数据集的4D张量是这样的:
(60000,28,28,1)

彩色图片

彩色图片有不同的颜色深度,这取决于它们的色彩(注:跟分辨率没有关系)编码。
一张典型的JPG图片使用RGB编码,于是它的颜色深度为3,分别代表红、绿、蓝。
这是一张我美丽无边的猫咪(Dove)的照片,750 x750像素,这意味着我们能用一个3D张量来表示它:
(750,750,3)

然后,如果我们有一大堆不同类型的猫咪图片(虽然都没有Dove美),
也许是100,000张吧,不是DOVE它的,750 x750像素的。我们可以在Keras中用4D张量来这样定义:
(10000,750,750,3)

5D张量

5D张量可以用来存储视频数据。TensorFlow中,视频数据将如此编码:

(sample_size, frames, width, height, color_depth)

如果我们考察一段5分钟(300秒),1080pHD(1920 x 1080像素),每秒15帧(总共4500帧),颜色深度为3的视频,我们可以用4D张量来存储它:
(4500,1920,1080,3)
当我们有多段视频的时候,张量中的第五个维度将被使用。如果我们有10段这样的视频,我们将得到一个5D张量:
(10,4500,1920,1080,3)

这个5D张量中值的数量为:
10 x 4500 x 1920 x 1080 x 3 = 279,936,000,000
在Keras中,我们可以用一个叫dype的数据类型来存储32bits或64bits的浮点数
我们5D张量中的每一个值都将用32 bit来存储,现在,我们以TB为单位来进行转换:
279,936,000,000 x 32 = 8,957,952,000,000bit = 1.119744T


参考文献


Learning AI if You Suck at Math — P4 — Tensors Illustrated (with Cats!)

你真的懂TensorFlow吗?Tensor是神马?为什么还会Flow?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

标签传播算法(Label Propagation)及Python实现

半监督学习(Semi-supervised learning)发挥作用的场合是:你的数据有一些有label,一些没有。而且一般是绝大部分都没有,只有少许几个有label。半监督学习算法会充分的利用unlabeled数据来捕捉我们整个数据的潜在分布。它…

UFLDL教程: Exercise: Sparse Autoencoder

自编码可以跟PCA 一样,给特征属性降维 一些matlab函数 bsxfun:Cbsxfun(fun,A,B)表达的是两个数组A和B间元素的二值操作,fun是函数句柄或者m文件,或者是内嵌的函数。在实际使用过程中fun有很多选择比如说加,减等,前面需…

概率图模型: Coursera课程资源分享和简介

本博客中概率图模型(Probabilistic Graphical Model)系列笔记以 Stanford 教授 Daphne Koller 的公开课 Probabilistic Graphical Model 为主线,结合资料(每篇博文脚注都附有链接)加以补充. 为便于对照课程查阅&#x…

UFLDL教程:Exercise:Vectorization

载入数据并显示 Deep Learning and Unsupervised Feature Learning Tutorial Solutions 下载MINIST数据集及加载数据集的函数。MINIST数据集的介绍。 % Change the filenames if youve saved the files under different names % On some platforms, the files might be saved…

UFLDL教程:Exercise:PCA in 2D PCA and Whitening

相关文章 PCA的原理及MATLAB实现 UFLDL教程:Exercise:PCA in 2D & PCA and Whitening python-A comparison of various Robust PCA implementations Deep Learning and Unsupervised Feature Learning Tutorial Solutions 统计学的基本概念 统计学里最基本…

UFLDL教程:Exercise:Softmax Regression

Softmax分类函数的Python实现 Deep Learning and Unsupervised Feature Learning Tutorial Solutions 逻辑回归假设函数 在线性回归问题中,假设函数具有如下形式: 在 logistic 回归中,我们的训练集由m 个已标记的样本构成:&#…

UFLDL教程: Exercise:Self-Taught Learning

自我学习 Deep Learning and Unsupervised Feature Learning Tutorial Solutions 1.先训练稀疏自编码器提取特征,再把特征和label给softmax分类器进行训练,最后用test数据集进行测试。 2.由于实际应用中找到大量有标注的样本是非常困难的,所…

UFLDL教程: Exercise: Implement deep networks for digit classification

Deep networks Deep Learning and Unsupervised Feature Learning Tutorial Solutions 深度网络的优势 比单层神经网络能学习到更复杂的表达。不同层的网络学习到的特征是由最底层到最高层慢慢上升的。比如在图像的学习中,第一个隐含层网络可能学习的是边缘特征&am…

UFLDL教程: Exercise:Learning color features with Sparse Autoencoders

Linear Decoders Deep Learning and Unsupervised Feature Learning Tutorial Solutions 以三层的稀疏编码神经网络而言,在sparse autoencoder中的输出层满足下面的公式 从公式中可以看出,a3的输出值是f函数的输出,而在普通的sparse autoenc…

UFLDL教程:Exercise:Convolution and Pooling

Deep Learning and Unsupervised Feature Learning Tutorial Solutions CNN的基本结构包括两层 其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确…

莫凡机器学习课程笔记

怎样区分好用的特征 避免无意义的信息避免重复性的信息避免复杂的信息 激活函数的选择 浅层神经网络,可以随便尝试各种激活函数 深层神经网络,不可随机选择各种激活函数,这涉及到梯度爆炸和梯度消失。(给出梯度爆炸和梯度消失的…

UFLDL教程:数据预处理

数据预处理是深度学习中非常重要的一步!如果说原始数据的获得,是深度学习中最重要的一步,那么获得原始数据之后对它的预处理更是重要的一部分。 一般来说,算法的好坏一定程度上和数据是否归一化,是否白化有关。 数据归…

How To Install Visual Studio Code On Ubuntu

链接 Linux中安装 Visual Studio Code 详解 在Ubuntu中安装Visual Studio Code How To Install Visual Studio Code On Ubuntu

深度学习笔记(待续)

背景知识 好的特征应具有不变性(大小、尺度和旋转等)和可区分性):例如Sift的出现,是局部图像特征描述子研究领域一项里程碑式的工作。由于SIFT对尺度、旋转以及一定视角和光照变化等图像变化都具有不变性,并…

人工智能泰斗迈克尔·乔丹分享机器学习要义:创新视角,直面挑战

2017年6月21日至22日,腾讯云未来峰会在深圳举行。人工智能领域的世界级泰斗迈克尔欧文乔丹(Michael I.Jordan)进行了主题为“机器学习:创新视角,直面挑战”的演讲,与大家分享他对人工智能的未来与挑战的见解…

查看医学影像文件软件

Mango Mango官网下载 直接点击Mango.jar 可打开软件。 可能出现的问题: XXis not marked as executable. it may be dangerous to run. 程序无法执行问题。 解决方法: 右键文件,属性--->权限--->勾选允许作为程序执行文件 或者 修…

ubuntu下终端提示符设置

PS1变量 修改/ect下bash.bashrc文件PS1变量 \d :代表日期,格式为weekday month date,例如:”Mon Aug 1” \H :完整的主机名称。例如:我的机器名称为:fc4.Linux,则这个名称就是fc4.l…

Learning from Imbalanced Classes

数据不均衡 数据不平衡是一个非常经典的问题,数据挖掘、计算广告、NLP等工作经常遇到。该文总结了可能有效的方法,值得参考: 1.Do nothing. Sometimes you get lucky and nothing needs to be done. You can train on the so-called natural …

Tensorflow官方文档---起步 MNIST示例

Tensorflow •使用图 (graph) 来表示计算任务. • 在被称之为 会话 (Session) 的上下文 (context) 中执行图. • 使用 tensor 表示数据. • 通过 变量 (Variable) 维护状态. • 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据 综述 Ten…

Git 版本管理

相关文章 版本管理 github访问太慢解决方案 Material for git workshop GitHub秘籍 安装-Git版本管理 Git官网安装说明 Linux 系统安装 # 如果你的 Linux 是 Ubuntu: $ sudo apt-get install git-all# 如果你的 Linux 是 Fedora: $ sudo yum install git-all 如果是其他…