TF01-01:Tensorflow的执行方式

本主题内容:体验Tensorflow的两种执行方式:

  1. TensorflowEager(立即)运行方式
  2. TensorflowGraphs(图)运行方式
  • Tensorflow提供两种数据处理方式
    • Eager
      TensorFlow 的Eager执行是传统的编程方式,直接对实际的数据立即执行运算,操作会返回具体的值;
    • Graphs
      TensorFlow 的Graphs执行是类似泛型模板编程方式,先对数据与计算过程进行模板描述,然后对具体的数据进行实例化执行,并获取结果的方式。
      Graphs的核心是构建图,图的主要元素是节点,Graphs中关键节点有两个:数据节点,运算节点。数据输入、处理、输出构成节点这几件的运算与数据流流[1],借用官方的一张示意图可以说明计算节点、数据节点与图
      图表示的数据处理流
  • Tensorflow引入了一些符号来表示,截图说明如下:

    图的表述符号(有箭头的表示核心节点与节点关系)

  • 准备

      1. 安装Tensorflow
    pip  install tensorflow   -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
    

    这是使用的是速度比较快的镜像站点,可以使用默认的官方站点。

      1. 在python程序中import模块
    import tensorflow as tf  
    
      1. 例子的计算任务描述
        计算两个随机矩阵的内积(A_{4\times3}\cdot B_{3\times2})。

一、体验Eager执行方式

1、启动Eager执行模式

  • 启动eager执行环境,并检测是否是eager执行环境,如果不是eager执行环境,则终止程序退出。
     import sys
     import numpy as np
     import tensorflow as tf
     
     #1.开启eager执行方式
     tf.enable_eager_execution()
     
     #2.判定当前是否是eager执行方式
     if tf.executing_eagerly():
         print("Eager执行方式")
     else:
         print("Graphs执行方式")
         sys.exit(-1)
    

2、Eager执行代码

  • 在计算中使用了两个numpy数组(矩阵),运算调用的是tensorflow的内积计算函数matmul
      #实现eager执行方式
      m1=np.random.uniform(0,1,(4,3))
      m2=np.random.uniform(0,1,(3,2))
      
      r=tf.matmul(m1,m2)
      
      print(r)
    
  • 程序输出如下:
    Eager执行模式下的输出结果
  • 如果把eager模式代码注释掉,则运行结果如下:
    Grahps执行方式下的输出结果

  在Graphs执行方式下,该怎样才能得到结果?下面使用来说明。

二、体验Graphs执行方式

  • Graphs执行模式是别人设计好的,使用的时候需要按照设计来使用,用好Graphs就多看官方文档。
  • 使用Graphs执行方式最大的好处,只要描述清楚数据与运算流程,细节都由API来执行(比如在Graphs模式下,感知器的训练中的激活函数与损失误差函数的导数都会交给API自动完成)。Eager传统模式,则需要关注所有细节(在Eager模式下,感知器的训练中,激活函数与误差损失函数都需要程序员处理)。

1.Graphs执行方式的模式

  • Graphs编程模式分成两步:
    • (1)描述数据、运算以及运算流程。
    • (2)构建运行会话环境,执行运算。

2.Graphs代码实现

  • 描述数据,运算与运算流程
    这里没有复杂的运算流程(通过函数的输入,输出形成数据与运算流程),可能不足以提现Graphs执行方式的强大。

      #1.描述图:数据节点,运行节点
      #数据节点
      m1=np.random.uniform(0,1,(4,3))
      #数据节点
      m2=np.random.uniform(0,1,(3,2))
      #运算节点(r也算数据节点,通过matmul建立与m1、m2的数据与运算流 )
      r=tf.matmul(m1,m2)
    
  • 构建会话环境,执行运算

      #2.构建会话执行环境,并执行图。
      #构建会话对象
      session=tf.Session()
      #使用会话初始化变量环境
      init_op= tf.global_variables_initializer()  #构建一个初始化器
      session.run(init_op)                        #执行初始化器,并完成全局变量初始化
    
      #执行运算
      re=session.run(r)                           #返回结果
      print(re)
    
  • 完整代码

      #coding=utf-8
      import numpy as np
      import tensorflow as tf
    
      #1.描述图:数据节点,运行节点
      #数据节点
      m1=np.random.uniform(0,1,(4,3))
      #数据节点
      m2=np.random.uniform(0,1,(3,2))
      #运算节点(r也算数据节点,通过matmul建立与m1、m2的数据与运算流 )
      r=tf.matmul(m1,m2)
    
    
      #2.构建会话执行环境,并执行图。
      #构建会话对象
      session=tf.Session()
      #使用会话初始化变量环境
      init_op= tf.global_variables_initializer()  #构建一个初始化器
      session.run(init_op)                        #执行初始化器,并完成全局变量初始化
    
      #执行运算
      re=session.run(r)                           #返回结果
      print(re)
    
  • 执行结果

    Graphs执行方式下执行结果
【资源】

相关代码:

  1. t01_eager.py(体验eager执行方式)
  2. t01_graphs.py(体验graphs执行方式)
    下载:【 代码(github)

  1. [数据流]:是一种用于并行计算的常用编程模型。在数据流图中,节点表示计算单元(椭圆表示)与计算使用或产生的数据(矩形表示)。

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

推荐阅读更多精彩内容

  • 简单线性回归 import tensorflow as tf import numpy # 创造数据 x_dat...
    CAICAI0阅读 3,541评论 0 49
  • 待岁月的浮尘都被过滤,就把每一天都当做是吉日良辰,把每个人都当做是生命里的初见,把每朵花都唤做姹紫嫣红。 ...
    弱水_6071阅读 364评论 0 1
  • 斯佳逃婚了。 当然不是像电视剧里,婚礼当天穿着婚纱逃出酒店那种。斯佳清楚地记得发生变故的那天,是跟袁方琪去婚姻登记...
    花蚊阅读 433评论 0 2
  • 红色 ,兴奋、热情,使人追求到极致,黄色,明耀、奇特,使人追逐向往;绿色蓬勃、向上,使人静似处子般凝望;但我还是喜...
    指针指向你心脏阅读 918评论 0 1