2019独角兽企业重金招聘Python工程师标准>>>


在前面的文章中,我们已经完成了AI基础环境的搭建(见文章:Ubuntu + Anaconda + TensorFlow + GPU + PyCharm搭建AI基础环境),以及初步了解了TensorFlow的特点和基本操作(见文章:快速掌握TensorFlow(一)),接下来将继续学习掌握TensorFlow。

本文主要是学习掌握TensorFlow的计算图、会话操作。

 
计算图是TensorFlow的核心概念,使用图(Graph)来表示计算任务,由节点和边组成。TensorFlow由前端负责构建计算图,后端负责执行计算图。
为了执行图的计算,图必须在会话(Session)里面启动,会话将图的操作分发到CPU、GPU等设备上执行。
下面将介绍如何在TensorFlow里面创建会话、图以及基本操作。

1、图(Graph)
TensorFlow Python库已经有一个默认图 (default graph),如果没有创建新的计算图,则默认情况下是在这个default graph里面创建节点和边。
在图里面添加节点非常方便。例如现在要创建这样的计算图,两个张量相加,如下图:
 
代码如下:

import tensorflow as tf
a=tf.constant([1.0,2.0], name='a')
b=tf.constant([3.0,4.0], name='b')
result = tf.add(a,b)

现在默认图就有了三个节点,两个constant(),和一个add()。
为了真正使两个张量相加并得到结果,就必须在会话里面启动这个图。

2、会话(Session)
要启动计算图,首先要创建一个Session对象。
使用tf.Session()创建会话,调用run()函数执行计算图。如果没有传入任何创建参数,会话构造器将启动默认图。如果要指定某个计算图,则传入计算图参数(如g1),则创建会话方式为tf.Session(graph=g1)创建会话(Session)主要有以下三种方式:
(1)创建一个会话

#启动默认图
sess=tf.Session()
result_value = sess.run(result)
print(result_value)
# ==> [4.0 6.0]# 任务完成, 关闭会话.
sess.close()

(2) 创建一个会话
Session在使用完后需要关闭以释放资源,除了显式调用close外,也可以使用“with”代码块 来自动完成关闭动作。代码如下:

with tf.Session() as sess:result_value = sess.run(result)print(result_value)# ==> [4.0 6.0]

(3)创建一个默认的会话

sess=tf.Session()
with sess.as_default():result_value = result.eval()print(result_value)

当指定默认会话后,可以通过tf.Tensor.eval函数来计算一个张量的取值。

(4)创建一个交互式会话
在交互式环境下(例如IPython),使用设置默认会话的方式来获取张量的取值更加方便,TensorFlow提供了一种在交互式环境下直接构建默认会话的函数:tf.InteractiveSession,该函数会自动将生成的会话注册为默认会话,使用 tf.Tensor.eval()代替 Session.run(),代码如下:

sess= tf.InteractiveSession()
result_value = result.eval()
print(result_value)
sess.close()

3、构建多个计算图
在TensorFlow中可以构建多个计算图,计算图之间的张量和运算是不会共享的,通过这种方式,可以在同个项目中构建多个网络模型,而相互之间不会受影响。
使用tf.Graph()函数构建图,构建多个计算图的方式如下:

# 构建计算图g1
g1=tf.Graph()
with g1.as_default():# 在计算图g1中定义变量'v',并设置初始值为0。v=tf.get_variable('v',initializer=tf.zeros_initializer()(shape = [1]))# 构建计算图g2
g2=tf.Graph()
with g2.as_default():# 在计算图g2中定义变量'v',并设置初始值微1。v=tf.get_variable('v',initializer=tf.ones_initializer()(shape = [1]))# 在计算图g1中读取变量'v'的取值
with tf.Session(graph=g1) as sess:tf.global_variables_initializer().run()with tf.variable_scope('',reuse=True):print(sess.run(tf.get_variable('v')))# 输出结果[0.]# 在计算图g2中读取变量'v'的取值
with tf.Session(graph=g2) as sess:tf.global_variables_initializer().run()with tf.variable_scope('',reuse=True):print(sess.run(tf.get_variable('v')))# 输出结果[1.]。

4、指定运行设备
如果电脑有多个GPU,可以在图、会话中指定要运行的设备
(1)在图中指定运行设备

g=tf.Graph()
# 指定计算运行的设备。
with g.device('/gpu:0'):result=tf.add(a,b)

(2)在会话中指定运行设备

with tf.Session() as sess:with tf.device("/gpu:0"):result=tf.add(a,b)

运行的设备用字符串进行标识,目前支持的设备包括:

  • "/cpu:0": 机器的 CPU
  • "/gpu:0": 机器的第一个 GPU,如果有的话
  • "/gpu:1": 机器的第二个 GPU,以此类推

通过以上介绍,已经了解了图、会话的基本操作,使用图 (graph) 来表示计算任务,使用会话 (Session) 来执行图。

接下来,我们将有更多讲解TensorFlow的精彩内容,敬请期待!

欢迎关注本人的微信公众号“大数据与人工智能Lab”(BigdataAILab),获取更多信息

推荐相关阅读

  • 【AI实战】快速掌握TensorFlow(一):基本操作
  • 【AI实战】快速掌握TensorFlow(二):计算图、会话
  • 【AI实战】快速掌握TensorFlow(三):激励函数
  • 【AI实战】快速掌握TensorFlow(四):损失函数
  • 【AI实战】搭建基础环境
  • 【AI实战】训练第一个模型
  • 【AI实战】编写人脸识别程序
  • 【AI实战】动手训练目标检测模型(SSD篇)
  • 【AI实战】动手训练目标检测模型(YOLO篇)
  • 【精华整理】CNN进化史
  • 大话卷积神经网络(CNN)
  • 大话循环神经网络(RNN)
  • 大话深度残差网络(DRN)
  • 大话深度信念网络(DBN)
  • 大话CNN经典模型:LeNet
  • 大话CNN经典模型:AlexNet
  • 大话CNN经典模型:VGGNet
  • 大话CNN经典模型:GoogLeNet
  • 大话目标检测经典模型:RCNN、Fast RCNN、Faster RCNN
  • 大话目标检测经典模型:Mask R-CNN
  • 27种深度学习经典模型
  • 浅说“迁移学习”
  • 什么是“强化学习”
  • AlphaGo算法原理浅析
  • 大数据究竟有多少个V
  • Apache Hadoop 2.8 完全分布式集群搭建超详细教程
  • Apache Hive 2.1.1 安装配置超详细教程
  • Apache HBase 1.2.6 完全分布式集群搭建超详细教程
  • 离线安装Cloudera Manager 5和CDH5(最新版5.13.0)超详细教程

转载于:https://my.oschina.net/u/876354/blog/1930490

【AI实战】快速掌握TensorFlow(二):计算图、会话相关推荐

  1. 人工智能AI实战100讲(二十)-先拍照后对焦,基于深度估计的景深编辑与背景虚化

    1 景深与背景虚化基础 1.1 什么是景深与虚化 动植物摄影,人像摄影中常使用浅景深来虚化背景,突出目标主体,可以大幅提升作品的艺术美感. 当被摄物体位于镜头前方(焦点的前.后)一定长度的空间内时,其 ...

  2. 人工智能AI实战100讲(二)-自动驾驶传感器之激光雷达(二)激光雷达配置车型介绍

    今年的上海车展热闹非凡,"智能化"已经成为2021年上海车展的核心主题,特别是新能源汽车大放异彩,预埋感知硬件,高的计算平台水平,自动辅助驾驶能力的肌肉展示. 自动驾驶等级每增加一 ...

  3. 人工智能AI实战100讲(二)-自动驾驶传感器之激光雷达(一)激光雷达为何必不可少?

    今天我们来说说其他车企为什么要在这个时间节点一窝蜂上激光雷达,感觉就是一个窗口期,谁家的汽车还不上激光雷达就意味着落后,意味着在自动驾驶这个赛道上掉队不少,特别是最近的上海车展来看,这个形态就越明显. ...

  4. 人工智能AI实战100讲(二)-自动驾驶传感器之激光雷达(三)主流车厂激光雷达的选择及布局

    主流车厂激光雷达的选择和布局 激光雷达发布的车型虽然多,但是价格高低,设计性能各不同,俗称外行人看热闹,内行人看门道,激光雷达都有哪些门道了,其实从主机厂关心哪些指标就知道有哪些门道了. 当然价格是车 ...

  5. 【AI实战】深度学习基础环境搭建(Ubuntu + anaconda + tensorflow + GPU + PyCharm)

    为方便日常的深度学习模型开发与测试,本人在自己笔记本上搭建一个深度学习的基础环境,便于学习AI使用.本人使用的笔记本配置是CPU为8代i5,显卡为GTX1060,内存为8G,基本上可满足日常的AI研究 ...

  6. AI实战:上海垃圾分类系列(一)之快速搭建垃圾分类模型

    前言 AI实战:上海垃圾分类系列(一)之快速搭建垃圾分类模型 AI实战:上海垃圾分类系列(二)之快速搭建垃圾分类模型后台服务 AI实战:上海垃圾分类系列(三)之快速搭建垃圾分类智能问答机器人 有上海网 ...

  7. php 数据采集模板,基于PHP实战帝国CMS系统二次开发(标签、模板、快速仿站、数据采集)...

    基于帝国CMS的网站开发是一套从入门至精通的帝国视频教程,该教程细腻入微的由服务器配置.帝国CMS安装.DIV+CSS模版制做,通过帝国CMS去实现模版的功... 基于帝国CMS的网站开发是一套从入门 ...

  8. 【AI实战】动手实现人脸识别程序

    人脸识别在现实生活中有非常广泛的应用,例如iPhone X的识别人脸解锁屏幕.人脸识别考勤机.人脸识别开门禁.刷脸坐高铁,还有识别人脸虚拟化妆.美颜,甚至支付宝还推出了刷脸支付.建设银行还实现了刷脸取 ...

  9. 【2023·CANN训练营第一季】昇腾AI入门课(TensorFlow)学习总结

    最近AI可是非常火爆,ChatGPT成为互联网领域最大的风口,带来了各个行业的焦点,也产生了很多场景的AI应用,这将改变人与工具的交互方式,为我们生活提供更便捷的服务.        此次正好报名参加 ...

最新文章

  1. 017_Upload上传
  2. Map转xml格式字符串
  3. 读入一组文本行,打印最长的文本行
  4. 第二章:Java_基本语法_5 数组
  5. 看了《OCP/OCA认证考试指南全册:Oracle Database 11g(1Z0-051,...
  6. C# 序列号和反序列化
  7. sparksql读取mysql表的两种方式
  8. Java中super()的用法。主类和子类的继承关系。(2)
  9. 360壁纸图片API收录
  10. xlsxwriter进度条php,PHP_XLSXWriter
  11. 草料二维码--在线二维码生成器
  12. 移动音乐播放平台-酷狗音乐2021提供下载
  13. 前端测试 —— 技术选型及入门
  14. 如何导出/导入PDF中的书签——FreePic2Pdf
  15. html5--项目实战-仿天猫(移动端页面)
  16. 【CF】Codeforces 1702F
  17. leetcode/加减的目标值,给数组元素添加+或-号组成的表达式值=target的方案数
  18. Ubuntu16.04美化软件及优秀工具推荐
  19. 插件 WebUploader
  20. linux 图标主题,Xenlism WildFire: Linux 桌面的极简风格图标主题

热门文章

  1. 【多标签文本分类】SGM: Sequence Generation Model for Multi-Label Classification
  2. 【pytorch】torch.mm,torch.bmm以及torch.matmul的使用
  3. sklearn与pytorch模型的保存与读取
  4. php7.0 连接ftp,PHPstorm连接ftp
  5. 服务器mac地址查询修改,服务器mac地址查询修改
  6. c2c网站开店的流程图_shopee开店入驻?Shopee选品为什么这么重要
  7. jpa-和-mybatis创建的事物管理器名称
  8. swift使用cocoapods导入oc三方库
  9. iOS使用Workspace来管理多项目
  10. mysql server远程连接_MySql server:开放mysql远程连接