【深度学习-2】TensorFlow基础(一): tensor and operation

尽管有一定的Python基础,但当我第一次接触TensorFlow(TF)的时候还是感觉很不习惯。所以,学习TF的第一步是用简单的例子(不涉及机器学习)搞清楚TF中的基本概念。

我在学习TensorFlow基础的时候,总结了以下2个目标:

  1. 能够熟练的使用Tensors,Graphs,Operations,Variables,placeholders,Sessions和name scopes来构建运行简单的TensorFlow graphs
  2. 能够在TensorBoard中查看构建好的graphs

简介

TensorFlow,顾名思义就是流动着的Tensor。首先,我们要搞清楚什么是tensor,它在哪里以何种方式流动?用最简单的话来说,Tensor实际上就是一个多维数组(multidimensional array),是TF的主要数据结构。它们在一个或多个由节点(nodes)和边(edges)组成的图(graphs)中流动。边代表的是tensors,节点代表的是对tensors的操作(operations,or Ops for short)。tensors在图中从一个节点流向另一个节点,每次经过一个节点都会接受一次操作。

Tensor

我在用R编程的时候,大多数情况下处理的都是2维的表格,而学习TF的时候就要接触更高维的数据结构,所以最好能在头脑中想象出数据的形状,例如:


tensors.png

举个简单的例子,彩色图像文件(RGB)一般都会处理成3-d tensor,每个2d array中的element表示一个像素,R代表Red,G代表Green,B代表Blue:


rgb_tensor.png

创建tensor的方法可以分为2种,一种是用TF自带的一些函数直接创建,例如:

import tensorflow as tf

# create a zero filled tensor
tf.zeros([row_dim, col_dim])

# create a one filled tensor
tf.ones([row_dim, col_dim])

# create a constant filled tensor
tf.fill([row_dim, col_dim], 42)

# create a tensor out of an existing constant
tf.constant([1, 2, 3])

# generate random numbers from a uniform distribution
tf.random_uniform([row_dim, col_dim], minval=0, maxval=1)

# generate random numbers from a normal distribution
tf.random_normal([row_dim, col_dim], mean=0.0, stddev=1.0)

另一种是将Python对象(Numpy arrays, Python lists,Python scalars)转成tensor,例如:

import numpy as np
x_data = np.array([[1., 2., 3.], [3., 2., 6.]])
tf.convert_to_tensor(x_data, dtype=tf.float32)

Tensor对象有3个属性:

  1. rank:number of dimensions
  2. shape: number of rows and columns
  3. type: data type of tensor's elements

Operation

下面举一个简单的例子来说明tensor是如何在graph中流动的:


example1.png

节点a接收了一个1-D tensor,该tensor从节点a流出后,分别流向了节点b和c,节点b执行的是prod操作(5*3),节点c执行的是sum操作(5+3)。当tensor从节点b流出时变成了15,从节点c流出时变成了8。此时,2个tensor又同时流入节点d,接受的是add操作(15+8),最后从节点d流出的tensor就是23。

用TF代码来创建上面的graph:

import tensorflow as tf
a = tf.constant([5, 3], name='input_a')
b = tf.reduce_prod(a, name='prod_b')
c = tf.reduce_sum(a, name='sum_c')
d = tf.add(b, c, name='add_d')

在上面的代码中,我们用不同的构造函数(constructor)定义了四个操作(对应图上4个节点)。例如,tf.constant()创建的操作实际上就是一个“二传手”:接受一个tensor(或者一个list对象,自动将其转换成tensor对象),然后传给与它直接相连的下一个node。tf.reduce_prod()tf.reduce_sum()操作可以把input tensor对象中的所有值相乘或相加,然后传递给下一个直接相连的node。

未完待续......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • 今天和小马中午聚餐,就我俩这胃口,点了四个菜,以聊为主,以吃为辅,哈哈。 一个菜也没吃完,聊得服务员也不管我们了,...
    浅唱低吟品生活阅读 201评论 0 0
  • 最近你的城市房价有上涨吗?有没有让你心惊胆战? 反正我在的这个三线城市忽然在上半年房价暴涨,让人不知所措。 但是,...
    娜9是我阅读 3,187评论 0 0
  • 午夜的街头 爱情是一个穿着黑丝的少女 或葡萄或红酒般的婉约 或一声低到尘埃里的叹息 或一首可以把远方照亮的情诗 月...
    京都物语阅读 284评论 3 4