TensorFlow之会话

1.1 会话

一个运行TensorFlow operation的类。会话包含以下两种开启方式

  • tf.Session:用于完整的程序当中     【如在pycharm中写代码】
  • tf.InteractiveSession:用于交互式上下文中的TensorFlow ,例如shell   【如在命令行进行写代码】

1 TensorFlow 使用 tf.Session 类来表示客户端程序(通常为 Python 程序,但也提供了使用其他语言的类似接口)与 C++ 运行时之间的连接

2 tf.Session 对象使用分布式 TensorFlow 运行时提供对本地计算机中的设备和远程设备的访问权限。

1.1.1 __init__(target='', graph=None, config=None)

会话可能拥有的资源,如 tf.Variable,tf.QueueBase和tf.ReaderBase。当这些资源不再需要时,释放这些资源非常重要。因此,需要调用tf.Session.close会话中的方法,或将会话用作上下文管理器。以下两个例子作用是一样的:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()def session_demo():"""会话演示:return:"""a_t = tf.constant(10)b_t = tf.constant(20)# 不提倡直接运用这种符号运算符进行计算# 更常用tensorflow提供的函数进行计算# c_t = a_t + b_tc_t = tf.add(a_t, b_t)print("tensorflow实现加法运算:\n", c_t)# 开启会话# 传统的会话定义# sess = tf.Session()# sum_t = sess.run(c_t)# print("sum_t:\n", sum_t)# sess.close()# 开启会话with tf.Session() as sess:# sum_t = sess.run(c_t)# 想同时执行多个tensorprint(sess.run([a_t, b_t, c_t]))  # 同时运行三个,同时也需要3个变量来接收# 方便获取张量值的方法# print("在sess当中的sum_t:\n", c_t.eval())# 会话的图属性print("会话的图属性:\n", sess.graph)return Noneif __name__ == '__main__':session_demo()

运行结果:

  • target:如果将此参数留空(默认设置),会话将仅使用本地计算机中的设备。可以指定 grpc:// 网址,以便指定 TensorFlow 服务器的地址,这使得会话可以访问该服务器控制的计算机上的所有设备。
  • graph:默认情况下,新的 tf.Session 将绑定到当前的默认图。
  • config:此参数允许您指定一个 tf.ConfigProto 以便控制会话的行为。例如,ConfigProto协议用于打印设备使用信息
# 运行会话并打印设备信息
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True,log_device_placement=True))

会话可以分配不同的资源在不同的设备上运行。

/job:worker/replica:0/task:0/device:CPU:0

device_type:类型设备(例如CPU,GPU,TPU)

示例代码:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()def session_demo():"""会话演示:return:"""a_t = tf.constant(10)b_t = tf.constant(20)# 不提倡直接运用这种符号运算符进行计算# 更常用tensorflow提供的函数进行计算# c_t = a_t + b_tc_t = tf.add(a_t, b_t)print("tensorflow实现加法运算:\n", c_t)# 开启会话# 传统的会话定义# sess = tf.Session()# sum_t = sess.run(c_t)# print("sum_t:\n", sum_t)# sess.close()# 开启会话with tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)) as sess:# sum_t = sess.run(c_t)# 想同时执行多个tensorprint(sess.run([a_t, b_t, c_t]))  # 同时运行三个,同时也需要3个变量来接收# 方便获取张量值的方法# print("在sess当中的sum_t:\n", c_t.eval())# 会话的图属性print("会话的图属性:\n", sess.graph)return Noneif __name__ == '__main__':session_demo()

1.1.2 会话的run()

  • run(fetches,feed_dict=None, options=None, run_metadata=None)

    • 通过使用sess.run()来运行operation
    • fetches:单一的operation,或者列表、元组(其它不属于tensorflow的类型不行)
    • feed_dict:参数允许调用者覆盖图中张量的值,运行时赋值
      • 与tf.placeholder搭配使用,则会检查值的形状是否与占位符兼容。

使用tf.operation.eval()也可运行operation,但需要在会话中运行

# 创建图
a = tf.constant(5.0)
b = tf.constant(6.0)
c = a * b# 创建会话
sess = tf.Session()# 计算C的值
print(sess.run(c))
print(c.eval(session=sess))

1.1.3 feed操作

  • placeholder提供占位符,run时候通过feed_dict指定参数   【placehold:在运行时填充数据,通过feed_dict.  好处:图定义好,数据没有固定,在运行的每次填充然后计算】
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()def session_run_demo():"""会话的run方法:return:"""# 定义占位符a = tf.placeholder(tf.float32)b = tf.placeholder(tf.float32)sum_ab = tf.add(a, b)print("sum_ab:\n", sum_ab)# 开启会话with tf.Session() as sess:print("占位符的结果:\n", sess.run(sum_ab, feed_dict={a: 3.0, b: 4.0}))return Noneif __name__ == '__main__':session_run_demo()

请注意运行时候报的错误error:

RuntimeError:如果这Session是无效状态(例如已关闭)。
TypeError:如果fetches或者feed_dict键的类型不合适。
ValueError:如果fetches或feed_dict键无效或引用 Tensor不存在的键。

补充:tf.InteractiveSession:用于交互式上下文中的TensorFlow

TensorFlow之会话相关推荐

  1. Tensorflow会话

    Tensorflow中的会话是来执行定义好的运算的.会话拥有并管理Tensorflow程序运行时的所有资源.当计算完成之后需要关闭会话来帮助系统回收资源,否则可能出现资源泄露的问题. Tensorfl ...

  2. Tensorflow——会话

    Tensorflow中的会话是来执行定义好的运算的.会话拥有并管理Tensorflow程序运行时的所有资源.当计算完成之后需要关闭会话来帮助系统回收资源,否则可能出现资源泄露的问题. Tensorfl ...

  3. 【tensorflow速成】Tensorflow图像分类从模型自定义到测试

    文章首发于微信公众号<与有三学AI> [tensorflow速成]Tensorflow图像分类从模型自定义到测试 这是给大家准备的tensorflow速成例子 上一篇介绍了 Caffe , ...

  4. 在iOS平台上使用TensorFlow教程(上)

    在利用深度学习网络进行预测性分析之前,我们首先需要对其加以训练.目前市面上存在着大量能够用于神经网络训练的工具,但TensorFlow无疑是其中极为重要的首选方案之一. 大家可以利用TensorFlo ...

  5. TensorFlow学习笔记之一(TensorFlow基本介绍)

    文章目录 TensorFlow计算模型---计算图 计算图的使用 TensorFlow数据模型---张量 TensorFlow运算模型---会话 使用tf.InteractiveSession在交互式 ...

  6. tensorflow入门基础

    tensorflow程序一般分为两个阶段,在第一个阶段需要定义图中所有的计算.在第二个阶段就是执行计算. 1. 计算图的使用 首先在tensorflow的程序中系统会维护一个默认的计算图,通过tf.g ...

  7. TensorFlow是什么?怎么用?终于有人讲明白了

    导读:在开始使用TensorFlow之前,必须了解它背后的理念.该库很大程度上基于计算图的概念,除非了解它们是如何工作的,否则无法理解如何使用该库.本文将简要介绍计算图,并展示如何使用TensorFl ...

  8. tensorflow 转张量类型为float_TensorFlow是什么?怎么用?终于有人讲明白了

    作者:翁贝托·米凯卢奇(Umberto Michelucci)来源:大数据DT(ID:bigdatadt) 导读:在开始使用TensorFlow之前,必须了解它背后的理念.该库很大程度上基于计算图的概 ...

  9. TensorFlow零基础入门指南——计算模型、数据模型、运行模型!

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 正文一共:4110,预计阅读时间:11分钟 本篇文章主要介绍TensorFlow的基本概念,包含TensorFlow ...

最新文章

  1. (转载)keras使用入门及3D卷积神经网络资源
  2. linux 同步与异步--阻塞与非阻塞型I/O
  3. iOS 如果刷新TableViewCell上得数据是空的 添加尾部暂无数据提示
  4. faker.js 登 GitHub 趋势榜标星 27.1k,可大批量生成假数据!
  5. servlet ehcache beanfactroy c3p0 配置文件
  6. 关于Java的静态初始化块
  7. C++笔记------static 和 const 在类中用法
  8. 三星获得加州自动驾驶测试许可,与Google苹果正面刚
  9. libcrypto.so.1.0.0缺失问题
  10. 数据分析流程——业务需求分析
  11. Word公式自动编号
  12. 千万数据的分库分表方案
  13. 职业选择与职业规划【转载】
  14. github releases一直失败的解决方案
  15. UCanCode发布跨平台开源组态\ 建模\仿真\工控VX++ 2021
  16. cmd中通过winsat命令测试硬盘、CPU、内存、3d性能等
  17. php-emoji使用微信,微信开发中emoji表情的问题
  18. Don‘t Stop Pretraining: Adapt Language Models to Domains and Tasks
  19. Android应用开发病虫害识别,基于Android系统的储粮害虫图像识别软件设计与实现...
  20. openfire主要插件介绍

热门文章

  1. 无代码的时代真的来了吗?
  2. AI 医生正式上岗了?AI 医疗结合迎爆发点!
  3. 洞察疫情,微软推出新冠数据分析网站COVID Insights
  4. 用AI加速物联网落地,安富利的客户洞察和解决之道
  5. ​70行Go代码打败C
  6. 一文帮你梳理清楚:奇异值分解和矩阵分解 | 技术头条
  7. 25,000,000行的代码就问你敢不敢动?!
  8. AI一分钟 | 谷歌租下北京 6000 平米写字楼,或将发展AI项目;工信部就个人信息保护约谈百度、支付宝、今日头条
  9. 实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型
  10. ​双十一剁手后,听蒋涛谈谈AI人才多么吸金:2018年社招AI人才平均月薪竟高达4万,算法红利期还有2年