Tensorflow笔记2:Session

2023-05-16

参考内容都出自于官方API教程tf.Session

一、Session类基本使用方法

  这里使用的是1.15版本,TF官方为了能够在2.0+版本中保持兼容,因此调用时使用了tf.compat.v1.Session
  定义:一个Session是对环境的封装,环境中包含执行/executed过的Operation和评估/evaluated过的Tensor
  一个Session会含有很多资源,例如Variable、QueueBase、RenderBase等。当Session运行结束后需要通过**Session().close()**方法释放资源。

# Build a graph.
a = tf.constant(5.0)
b = tf.constant(6.0)
c = a * b
sess = tf.Session()	# Launch the graph in a session.
print(sess.run(c))	# Evaluate the tensor `c`.
sess.close()	# 释放资源

# context manager形式,with结束自动关闭sess
with tf.Session() as sess:
	sess.run(...)

  Session在创建时,构造函数__init__可以指定三个参数:

  • target:一般用于分布式TF中,用于连接执行引擎;
  • graph:此Session要launch的图,不指定则为默认;
  • config:是一个protocol buffer:ConfigProto
# Launch the graph in a session that allows soft device placement and logs the placement decisions. 官方实例
sess = tf.Session(config=tf.ConfigProto(
    allow_soft_placement=True,	# 对设备采用柔性约束
    log_device_placement=True)	# 记录信息
    )
    
# 设定GPU增量使用模式,不要全占满GPU:
tfconfig = tf.ConfigProto(allow_soft_placement=True)  # set device auto
tfconfig.gpu_options.allow_growth = True  # mem increase
with tf.Session(config=tfconfig) as sess:

二、Properties

  Session中有很多properties,这些可以直接通过Session().调用查看内部的值。此处介绍Session中关于graph的两个properties:

  • graph:返回此Session中已经launch的graph。
  • graph_def:将构建的TF图以串行化方式显示出来。
a = tf.constant(1.0)
sess = tf.Session()
assert sess.graph == tf.get_default_graph()
print(sess.graph)   # <tensorflow.python.framework.ops.Graph object at 0x7f4a672ac9d0>
print(sess.graph_def)	# 返回图的串行化表示:
# node {
#   name: "Const"
#   op: "Const"
# 	...
#  versions {
#   producer: 22
# }

二、Methods

  并没有全列出来,见一个记录一个:

1.as_default()

  返回一个context manager将当前Session设置为默认。一般结合with语句进行使用。as_default()语句并不会结束Session,必须调用close()方法手动结束。

c = tf.constant(1.0)
tfconfig = tf.ConfigProto(allow_soft_placement=True)  # set device auto
tfconfig.gpu_options.allow_growth = True  # mem increase
sess = tf.Session(config=tfconfig)
with sess.as_default():
    assert tf.get_default_session() is sess
    print tf.get_default_session()  # <tensorflow.python.client.session.Session object at 0x7f314d0b3a50>
    print(c.eval()) # 1.0 张量使用eval方法进行求值
    print(sess.run(c)) # 1.0 也可以使用run进行求值
    print(c)  # Tensor("Const:0", shape=(), dtype=float32)

  在会话中进行运算并取值一共有三种:

  • tf.Operation.run():针对操作,Run operations
  • tf.Tensor.eval():针对张量,Evaluate tensors
  • sess.run():在全局空间取值,下部分会讲

2.run()

  用于运行Operations和评估Tensors。

run(
    fetches,	# 要运行的Op和要评估的Tensor,列表传入
    feed_dict=None,	# 投喂的数据
    options=None,
    run_metadata=None
)

三、应用实例:多Graph多Session

import tensorflow as tf
import os

os.environ['CUDA_VISIBLE_DEVICES'] = '0'  # set default GPU:0
tfconfig = tf.ConfigProto(allow_soft_placement=True)  # set device auto
tfconfig.gpu_options.allow_growth = True  # mem increase

g1 = tf.Graph()  # Graph 1: actor net
g_ = tf.Graph()  # L_Net
g2 = tf.Graph()  # Graph 2: disturber net

with g1.as_default():
    a = tf.constant(2.0)
    b = tf.constant(3.0)
    c = tf.constant(4.0)
    d = tf.multiply(a, b) + c

with g2.as_default():
    e = tf.constant(4.0)
    f = tf.constant(6.0)
    g = tf.constant(6.0)
    h = tf.multiply(e, f) + g

with g_.as_default():
    i = tf.placeholder(dtype=tf.float32, shape=[], name='G_Input')
    j = i + 100.0

sess1 = tf.Session(graph=g1, config=tfconfig)
sess_ = tf.Session(graph=g_, config=tfconfig)
sess2 = tf.Session(graph=g2, config=tfconfig)

print('result of Net1: ', sess1.run(d))  # 10.0
print('result of Net2: ', sess2.run(h))  # 30.0
print(sess_.run(fetches=j, feed_dict={i: sess1.run(d)}))  # Take the output of Net1 as the input of L_Net
print(sess_.run(fetches=j, feed_dict={i: sess2.run(h)}))  # Take the output of Net2 as the input of L_Net
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow笔记2:Session 的相关文章

  • 为什么我的结果仍然无法重现?

    我想要为 CNN 获得可重复的结果 我使用带有 GPU 的 Keras 和 Google Colab 除了建议插入某些代码片段 这应该允许再现性 之外 我还在层中添加了种子 This is the first code snipped to
  • HttpSession 内的同步是否可行?

    UPDATE 问题后立即解决 问题 通常 同步是在 JVM 内序列化并行请求 例如 private static final Object LOCK new Object public void doSomething synchroniz
  • 在张量流的卷积层中使用自定义过滤器

    我一直在从各种教程中学习 Tensorflow 并且想知道是否可以定义一个自定义过滤器供卷积网络使用 例如 如果我知道特征中有有意义的结构 使得每个其他特征都是相关的 我想定义一个看起来像 0 1 0 1 0 1 的过滤器 tf nn co
  • MultiHeadAttention Attention_mask [Keras、Tensorflow] 示例

    我正在努力掩盖 MultiHeadAttention 层的输入 我正在使用 Keras 文档中的 Transformer Block 进行自我关注 到目前为止 我在网上找不到任何示例代码 如果有人能给我一个代码片段 我将不胜感激 变压器块来
  • ASP.NET 会话状态服务器与 InProc 会话

    运行会话状态服务器而不是 InProc 的开销性能损失是多少 重要吗 我知道您可以使用状态服务器重新启动 w3wp 并保留所有会话状态 这是相对于 InProc 的唯一优势吗 这取决于您的部署计划 在单个服务器上 损失很小 但好处同样有限
  • 为什么应该或不应该将数据集、数据表等存储为 ASP.NET 页面中的会话变量?

    我正在开发一个使用 Web 服务返回的数据集的 Web 应用程序 当应用程序运行时 我将该数据集存储为会话变量 以便在用户导航到将编辑数据集中的表的不同页面时反复使用 这个想法是 当应用程序加载时 用户只需要等待一次数据 然后应用程序将使用
  • 如何在 Shiny 应用程序中访问/打印/跟踪当前选项卡选择?

    我正在一个闪亮的应用程序中工作 我希望能够访问用户在会话中当前所在选项卡上的信息 我有一个观察事件 用于侦听要单击的特定按钮 简而言之 我想存储 打印用户单击此按钮时所在的当前选项卡 单击此按钮后 选项卡将更改为带有 updateTabIt
  • 在c++中的嵌入式python中导入tensorflow时出错

    我的问题是关于在 C 程序中嵌入 Python 3 5 解释器以从 C 接收图像 并将其用作我训练的张量流模型的输入 当我在 python 代码中导入tensorflow库时 出现错误 其他库工作正常 简化后的代码如下 include
  • Tensorflow:如何通过 tf.gather 传播梯度?

    我在尝试传播损失函数相对于代表收集索引的变量的梯度时遇到一些问题 类似于空间变换器网络中所做的事情 https github com tensorflow models blob master transformer spatial tra
  • PHP 会话不会在每个请求上延长 Cookie 过期时间

    session start 是否应该通过 session gc maxlifetime 变量来延长会话 ID cookie 的寿命 我的 session gc maxlifetime 是 24 分钟 每个会话仅存活 24 分钟 无论网站上有
  • 如何使用 JSESSIONID 手动加载 Java 会话?

    我有一个处理多部分表单帖子的 servlet 该帖子实际上是由嵌入在页面中的 Flash 文件上传组件制作的 在某些浏览器中 Flash 生成的 POST 不包含 JSESSIONID 这使得我无法在发布期间从会话加载某些信息 Flash
  • 当用户使用相同的凭据登录两次时如何使用户会话无效

    我正在使用带有 Richfaces 和 Facelets 的 JSF 1 2 我有一个应用程序 其中包含许多会话范围的 Bean 和一些应用程序 Bean 假设用户使用 Firefox 登录 创建一个会话 ID A 然后他打开 Chrome
  • TensorFlow 运算符重载

    有什么区别 tf add x y and x y 在 TensorFlow 中 当您使用以下命令构建图表时 您的计算图表会有什么不同 代替tf add 更一般地说 有 或者其他张量超载的操作 如果至少有一个x or y is a tf Te
  • 增加 sigmoid 预测输出值?

    我创建了一个用于文本分类的 Conv1D 模型 当在最后一个密集处使用 softmax sigmoid 时 它产生的结果为 softmax gt 0 98502016 0 0149798 sigmoid gt 0 03902826 0 00
  • 测试 CodeIgniter 会话变量的正确方法是什么?

    获取以下代码片段 测试确保会话变量不为空的最佳方法是什么 如果稍后在我的脚本中 我调用以下内容 第一个打印正确 但在第二个我收到消息 未定义的变量 已登录 我尝试过使用 empty and isset 但两者均未成功 我还尝试使用向后执行
  • Tensorflow:无法在 gradle 中解析

    今天早上我打开 Android Studio 时 Gradle 尝试同步时出现以下错误 Error 103 13 Failed to resolve org tensorflow tensorflow android 按照他们的说明Gith
  • 从 ios 应用程序到 symfony2 Web 应用程序的登录和管理会话

    我使用 Symfony2 开发了一个 Web 应用程序 我用过FOS用户包用于用户管理和安全 现在 我正在考虑为我的网络开发一个本机 iOS 应用程序 但并不真正知道如何解决从应用程序创建会话的问题 并在整个交互用户应用程序中维护它 换句话
  • 如何在arm64主机上运行amd64 docker镜像

    警告 请求的映像平台 linux amd64 与检测到的主机平台 linux arm64 v8 不匹配 并且未请求特定平台 2021 07 28 22 25 06 349222 F tensorflow core platform cpu
  • model.fit 在 Keras 中如何工作?

    我之前的帖子或错误是这样的one https stackoverflow com questions 52261090 do the operations defined in array ops in tensorflow have gr
  • 缩小轴 1 的形状为空 [x,0]

    我正在尝试训练 SVHN 街景门牌号码 数据集 用于张量流中的对象检测 对数字进行一些基本的 OCR 到目前为止 我已经成功地遵循了对象检测张量流指南中的宠物训练示例 当我基于样本 fast rcnn resnet101 config 训练

随机推荐

  • 二次规划_1_——Lagrange方法

    二次规化是非线性规化中的一种特殊情形 xff0c 其目标函数是二次实函数 xff0c 约束是线性的 考试中会考到四种方法 xff0c 分别为 xff1a Lagrange方法 起作用集方法 直接消去法和广义消去法 前两种在教材上有详细描述
  • 二次规划_2_——起作用集方法

    这个算法很反人类 xff0c 迭代过程相当复杂 xff0c 最优化老师说 xff1a 明确地告诉你要考的 起作用集方法适用于消元法和Lagrange方法无法处理的不等式约束二次规化问题 其主要思想是 xff1a 以已知点为可行点 xff0c
  • 约束非线性优化:几何意义&对偶形式

    借助老师的PPT对约束非线性优化问题的几何意义 和对偶形式 进行阐述 一 几何意义 xff08 1 xff09 等式约束 考虑只有等式约束h x 的非线性优化问题 xff0c 形式为 xff1a 可视化结果如下图所示 xff0c 红色曲线为
  • 转载篇:优秀博文汇总

    1 Pytorch中堆网络语法 xff1a nn moduleList 和Sequential由来 用法和实例 写网络模型 https blog csdn net e01528 article details 84397174 2 CNN中
  • 批量归一化:Batch Normalization层 原理+Pytorch实现

    一 BN层概念明晰 BN层存在的意义 xff1a 让较深的神经网络的训练变得更加容易 BN层的工作内容 xff1a 利用小批量数据样本的均值和标准差 xff0c 不断调整神经网络中间输出 xff0c 使整个神经网络在各层的中间输出的数值更加
  • 模型量化——基础知识 & LSQ论文阅读

    感谢陈老师给的机会 xff0c 有幸能够参加2020年的DAC比赛 我在其中负责目标检测器的调试和量化 自己第一次接触量化这个任务 xff0c 很多东西都是一点一点学 一 量化基础 对于一个全精度的值 v v v xff0c 若量化步长为
  • python3安装tensorflow遇到的问题

    1 使用命令 xff1a sudo pip3 install upgrade https storage googleapis com tensorflow linux cpu tensorflow 1 1 0rc2 cp35 cp35m
  • argparse模块使用说明

    深度学习的工程中 xff0c py文件中的main函数一开始总会有大量的参数传入 xff0c 而通常使用的方法就是使用argparse通过命令行传入 xff0c 这篇博文旨在记录argparse的常用方法 一 语句简介 1 载入argpar
  • Tensorboard在网络训练中的Logger使用方法

    做为神经网络训练中最常用的可视化工具 xff0c Tensorboard经常在Pytorch和Tensorflow框架中做为可视化工具 但是其使用的确是有点繁琐 xff0c 所以开设了一个这样的专题 xff0c 用于总结见过的工程里面的数据
  • Pytorch训练流程

    调试了很久YOLO的标准Pytorch实现 xff0c 将Train代码进行了重新整理 xff0c 抽出了标准的Pytorch训练框架 现在整理下来 xff0c 以备后用 整理后的代码分为三个大部分 xff0c 每个大部分分为三个小部分 x
  • 初识Vulkan渲染管线

    目前参考 Vulkan规范 和 Vulkan开发实战详解 对渲染管线有了一个初步的认识 现结合中英文的渲染管线图进行笔记整理 中英文的渲染管线图分别如下所示 xff1a 绘制命令送入设备队列执行后 xff0c Vulkan将原始的物体顶点坐
  • Vulkan着色器的GLSL创建、编译、加载、创建流程

    Vulkan没有指定官方的着色器编程语言 xff0c 而是采用SPIR V二进制中间格式进行表示 开发人员一般需要基于某种着色器编程语言开发着色器 xff0c 之后再编译为SPIR V格式 可以选用GLSL着色器编程语言进行开发 大型游戏场
  • 神经网络运算量&参数量估计——FLOPS和FLOPs辨析

    一 概念明晰 首先要明确 运算量 和 参数量 两个概念 xff1a 参数量 xff1a 这个比较好理解 xff0c 例如卷积层中的卷积核c i k k n o xff0c 其参数量就是相乘的结果 而且 xff0c 无论输入图像的尺寸怎么变
  • 机器学习基础——彻底搞懂Precision\Recall\F1\P-R\ROC

    一直以为自己理解这些概念 xff0c 但是其实只是听说过而已 这些概念的释义来自于周志华教授的 机器学习 xff0c 都属于对机器学习算法的性能度量 一 错误率与精度 还是使用书上的定义写的明确 xff0c test set中所有样本预测对
  • [交叉熵损失函数的由来:KL散度] & [softmax+交叉熵损失函数求梯度 推导]

  • SSH基础操作

    这里写自定义目录标题 SSH基础操作SSH免密登录客户端 快捷登录服务器端 sshd配置配置完成后重启服务器端sshd服务 SSH基础操作 span class token function ssh span span class toke
  • Linux下screen的使用

    关掉xshell之后网站也随着关闭 xff0c 我们可以使用screen命令 xff0c 来让保证退出ssh之后程序继续在后台跑 利用SSH远程连接服务器 xff0c 运行程序需要保证在此期间窗口不能关闭并且连接不能断开 xff0c 否则当
  • SAI 串行音频接口学习

    SAI 简介 串行音频接口 xff08 SAI xff09 xff0c SAI具有灵活性高 配置多样的特点 SAI 通过两个完全独立的音频子模块来实现这种灵活性与可配置型 xff0c 每个音频子模块与多达4个引脚 xff08 SD SCK
  • Tensorflow笔记1:Graph

    参考内容都出自于官方API教程tf Graph 一 Graph类调用 这里使用的是1 15版本 xff0c TF官方为了能够在2 0 43 版本中保持兼容 xff0c 因此调用时使用了tf compat v1 Graph 若安装的就是1 1
  • Tensorflow笔记2:Session

    参考内容都出自于官方API教程tf Session 一 Session类基本使用方法 这里使用的是1 15版本 xff0c TF官方为了能够在2 0 43 版本中保持兼容 xff0c 因此调用时使用了tf compat v1 Session