系列博客链接:

(一)TensorFlow框架介绍:https://www.cnblogs.com/kongweisi/p/11038395.html

(二)TensorFlow框架之图与TensorBoard:https://www.cnblogs.com/kongweisi/p/11038517.html

本文概述:

  应用sess.run或者eval运行图程序并获取张量值

  应用feed_dict机制实现运行时填充数据

  应用placeholder实现创建占位符

1、会话

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

  • tf.Session:用于完整的程序当中
  • tf.InteractiveSession:用于交互式上下文中的TensorFlow ,例如shell(ipython中就用这个

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

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

1.1 初始化 init(target='', graph=None, config=None)

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

# 使用close()方法
sess = tf.Session()
sess.run(...)
sess.close() # 使用上下文管理器
with tf.Session() as sess:
sess.run(...)
  • target。 如果将此参数留空(默认设置),会话将仅使用本地计算机中的设备。可以指定 grpc:// 网址,以便指定 TensorFlow 服务器的地址,这使得会话可以访问该服务器控制的计算机上的所有设备。
  • graph: 默认情况下,新的 tf.Session 将绑定到当前的默认图。并且只能当前的默认图中operation。
  • 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)

1.2 会话的run()

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

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

使用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))

feed操作

语法:placeholder提供占位符,run时候通过feed_dict指定# 实现一个加法运a = tf.constant(3.b = tf.constant(4.0)

# 可以使用重载的运算 + --> 加法op操作
sum_ma = b + x1
print(sum_ma) sum_ = tf.add(a, b) # 结合feed_dict使用
# 当不确定数据的形状,可以使用none
# [None, 3]
plt = tf.placeholder(tf.float32, [None, 3]) # print(sum)
# 会话,默认只能运行默认的图,不能运行其它的图(可以通过graph参数解决)
# 1、会话:运行图结构
# 2、会话掌握了资源,会话运行结束,资源释放,无法再去使用这些资源计算
# with : , close()
with tf.Session() as sess:
# run你要运行的内容, 必须是一个op
# 允许调用的时候去覆盖原来的值,运行时候提供数据
   # 这里的plt就是上面placeholder占位符,后面提供要训练的数据  
   print(sess.run([sum_, sum_ma, a, b, plt], feed_dict = {plt: [[1, 2, 3], [4, 5, 6]]}))
#
p = tf.placeholder(tf.float32)
t = p + 1.0
# eval也支持这样的操作
t.eval(feed_dict={p:2.0})

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

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

(第一章第三部分)TensorFlow框架之会话的更多相关文章

  1. (第一章第二部分)TensorFlow框架之图与TensorBoard

    系列博客链接: (一)TensorFlow框架介绍:https://www.cnblogs.com/kongweisi/p/11038395.html 本文概述: 说明图的基本使用 应用tf.Grap ...

  2. ASP.NET自定义控件组件开发 第一章 第三篇

    原文:ASP.NET自定义控件组件开发 第一章 第三篇 第三篇:第一章的完结篇 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待 ...

  3. ASP.NET自定义控件组件开发 第一章 第三篇 第一章的完结篇

    ASP.NET自定义控件组件开发 第一章 第三篇   第三篇:第一章的完结篇 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ...

  4. (第二章第二部分)TensorFlow框架之读取图片数据

    系列博客链接: (第二章第一部分)TensorFlow框架之文件读取流程:https://www.cnblogs.com/kongweisi/p/11050302.html 本文概述: 目标 说明图片 ...

  5. Solr In Action 中文版 第一章(三)

    3.1              为什么选用Solr? 在本节中.我们希望能够提供一些关键信息来帮助于你推断Solr是否是贵公司技术方案的正确选择.我们先从Solr吸引软件架构师的方面说起. 3.1  ...

  6. 第一章-第三题(目前流行的源程序版本管理软件和项目管理软件优缺点)--By梁旭晖

    引用自:http://www.cnblogs.com/WJ1234/p/5285595.htmlhttp://blog.163.com/yuyang_tech/blog/static/21605008 ...

  7. 读高性能JavaScript编程学英语 第一章第三页第一段话

    When the browser encounters a <script> tag, as in this HTML page, there is no way of knowing w ...

  8. (第一章第五部分)TensorFlow框架之变量OP

    系列博客链接: (一)TensorFlow框架介绍:https://www.cnblogs.com/kongweisi/p/11038395.html (二)TensorFlow框架之图与Tensor ...

  9. (第一章第四部分)TensorFlow框架之张量

    系列博客链接: (一)TensorFlow框架介绍:https://www.cnblogs.com/kongweisi/p/11038395.html (二)TensorFlow框架之图与Tensor ...

随机推荐

  1. SpringDataRedis入门到深入

    一:简介 SpringDataRedis是SpringData开源项目中的一部分,它可以在Spring项目中更灵活简便的访问和操作Redis:原先在没有SpringDataRedis时往往使用Jedi ...

  2. Jupyter Notebook 更改字体、字体大小、行高

    (废话):今天在做实验的时候遇到了一点问题,就问了问本科的室友,结果室友推荐我使用Jupyter Notebook来写代码,以前看其他同学使用过,但是一直在用Pycharm写,需要的时候顶多是Debu ...

  3. NOI Online 2021 入门组 T1

    Description 题目描述 Alice.Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕. 三个人的需求量分别为 \(a, b, c\),现在请你帮他们切蛋糕,规则如下 ...

  4. JavaScript 中如何将日期格式化为 DD/MM/YYYY

    在 JavaScript 中要将日期格式化为 dd/mm/yyyy .需要遵循以下步骤: 使用 getDate().getMonth() 和 getFullYear() 方法获取特定日期的日.月和年. ...

  5. 「BalkanOI 2018 Day1」Minmaxtree

    「BalkanOI 2018 Day1」Minmaxtree 每个点都有一个最大和最小权值的限制. 然后每一个权值的限制都必须要取到. 每个点显然可以直接让他取到最大或最小权值. 可以想到每个点匹配一 ...

  6. Tomcat启动报错org.apache.catalina.core.StandardContext listenerStart

    感谢原文作者:西北码农 原文链接:https://blog.csdn.net/bitree1/article/details/72236633 解决方法: 1.检查配置信息有无异常:如 web.xml ...

  7. Android总结【不定期更新】

    全屏显示: this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParam ...

  8. tomcat访问所有的资源,都是用Servlet来实现的

    感谢大佬:https://www.zhihu.com/question/57400909 tomcat访问所有的资源,都是用Servlet来实现的. 在Tomcat看来,资源分3种 静态资源,如css ...

  9. php常考功能函数

    1.统计数组元素个数 $arr = array( '1011,1003,1008,1001,1000,1004,1012', '1009', '1011,1003,1111' ); $result = ...

  10. 如何定制docker容器的系统时间

    Dockerfile加入下面一句(标红的部分): FROM xxxxxxENV JAVA_OPTS="-Dfile.encoding=UTF-8"ENV TZ=Asia/Shang ...