Tensorflow 中 sess.run([op1, op2...]) 的顺序

2024-01-27

我想知道 sess.run(ops_list, ...) 中操作列表的运行顺序是什么。例如: 对于典型的分类场景:_, loss = sess.run([train_op, loss_op]), if train_op先运行,那么损失就是当前反向传播之后的损失。但如果loss先运行,那么损失就是当前反向传播之前的损失。 有人帮助我吗?谢谢。


loss将是损失的价值before引起的更新train_op。注意loss_op是优化器的输入,因此它必然位于“之前”train_op在图中。loss_op用变量值计算一开始 of the run手术。如果你想计算损失after train_op,你可以这样做,例如使用tf.control_dependencies https://www.tensorflow.org/api_docs/python/tf/control_dependencies使用优化器阻止并再次计算损失,但在这种情况下,您将在每个步骤上对模型进行两次前向传递,并产生相关成本。通常,如果您只想绘制监控损失或类似的数据,则可以使用上一步中的值。

为了进一步说明,一般来说,TensorFlow 操作的执行顺序仅在这些操作相互依赖的情况下得到保证,并且与传递给的顺序无关run。就你而言,train_op依赖于取决于loss_op, so loss_op必须先走。但是,在其他情况下,操作并不直接相互依赖,在这种情况下,顺序无法保证。很多时候这并不重要,但在某些情况下却很重要。考虑下一个例子:

import tensorflow as tf

v = tf.Variable(0)
v2 = 2 * v
v_update = v.assign(v + 1)
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for i in range(5):
        print(sess.run([v_update, v2]))

在我的计算机上运行产生了以下输出:

[1, 0]
[2, 2]
[3, 4]
[4, 8]
[5, 10]

如你所见,v2有时是更新值的两倍,有时是未更新值的两倍。例如,如果我们想确保v2总是运行before v_update我们可以这样做:

import tensorflow as tf

v = tf.Variable(0)
v2 = 2 * v
with tf.control_dependencies([v2]):
    v_update = v.assign(v + 1)
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for i in range(5):
        print(sess.run([v_update, v2]))

它始终如一地产生:

[1, 0]
[2, 2]
[3, 4]
[4, 6]
[5, 8]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow 中 sess.run([op1, op2...]) 的顺序 的相关文章

随机推荐

  • 如何在ransack上设置带有字段名称的默认条件?

    我有一个用户和一个角色模型 两者都通过 habtm 关联 并且有一个与角色关联的论坛模型 在论坛的搜索表单中 我想按具有特定角色 按名称 版主 的用户进行过滤 来源看起来像这样 class User lt ActiveRecord Base
  • SQL:GROUP BY 之后的 SUM

    样本表 CustomerId VoucherId CategoryId StartDate EndDate 10 1 1 2013 09 01 2013 09 30 10 1 2 2013 09 01 2013 09 30 11 2 1 2
  • MongoDB C# 驱动程序:忽略插入属性

    我正在使用官方 MongoDB C Drive v0 9 1 26831 但我想知道给定一个 POCO 类 是否有办法忽略插入时的某些属性 例如 我有以下课程 public class GroceryList public string N
  • 如何链接到 Xcode 中的特定框架版本?

    我有一个链接到 OS X 的 Python framework 的应用程序 由于 Snow Leopard 已升级到 Python 2 6 该框架现在包含 2 4 2 5 和 2 6 的版本 不过 我的程序似乎不想链接到 2 6 当我尝试使
  • 在相机上叠加图像预览

    介绍 我有一个自定义相机应用程序 我在其中通过自定义 SurfaceView 显示相机预览 我需要实现的是 从图像资源创建覆盖图像 该图像将显示在cameraPreview 上 例如滤镜 我一直在不同的主题中搜索这个问题 但我还没有找到适用
  • 列出 R 闪亮服务器上应用程序中的对象内存使用情况

    我一直在尝试显示在 R Shiny Server 上运行时 R Shiny 应用程序中使用的每个对象的内存使用情况 以便识别内存泄漏 在 R 中 我可以调用ls or objects 并获取所有这些信息 一旦我尝试在闪亮的应用程序中显示此信
  • 使用 ORDER BY 时出现数据类型不匹配错误

    我有一个使用本地 sqlite 数据库的 Android 应用程序 private SQLiteDatabase mDb 当我运行此查询时 我将光标移到 pid 等于 id 的行上 根据需要 mDb query true PT TABLE
  • 使用 numpy (或其他向量化方法)优化此函数

    我正在用Python计算群体遗传学领域的经典计算 我很清楚有很多算法可以完成这项工作 但出于某种原因我想构建自己的算法 下面一段是图片 因为 StackOverflow 不支持 MathJax 我想要一个有效的算法来计算这些Fst 目前我只
  • 如何切换猫鼬数组中的布尔值?

    我想切换模式数组中的布尔值 我正在尝试使用数据库中存在的值切换该值 请参阅代码 但只是真变假 而不是假变真 以下是代码 exports postStatusItemchange req res next gt const productId
  • Jetpack Compose 滚动条

    有没有办法添加滚动条来添加LazyColumn ScrollableColumn已弃用 Javadoc 没有提及 Jetpack Compose 中有关滚动条的任何内容 Just to clarify this is the design
  • 数据添加到QLineSeries后如何更新/重绘QChart?

    我正在生成一些我想用来绘制图表的数据QChart 朋友们 这是我第一次使用QChart 所以基本上我所做的就是复制QLine系列示例 https doc qt io qt 5 qtcharts linechart example html并
  • 如何在Android弹出菜单中设置默认选择的选项?

    我使用以下代码来创建菜单 PopupMenu popup new PopupMenu getApplicationContext v MenuInflater inflater popup getMenuInflater inflater
  • 如何使用ggplot2将x轴从年更改为月

    我有一个随时间变化的网络访问量图表 其中绘制了从 2014 年至今的每日流量 如下所示 ggplot subset APRA Post Day gt 2013 12 31 aes x Post Day y Page Views geom l
  • php从同一浏览器和同一php脚本同时下载文件

    你好 我有这个简单的代码 强制随机文件下载 我的问题是 如果我从同一个浏览器调用脚本两次或多次 第二次下载将不会开始 直到第一次完成或中断 因此我每次只能下载一个文件 你有什么线索吗 这可能与PHP的会话处理有关 使用默认的会话处
  • Chrome 中的窗口高度错误

    我正在尝试获取 Chrome 浏览器窗口的正确宽度和高度 Firefox 中的大小是正确的 我没有尝试过任何其他浏览器 我已将文档类型设置为 DOCTYPE html并尝试过 window height window width windo
  • 在自定义活动中绘制 TextView?

    我正在实施一个自定义View 我需要在其中绘制一些文本 文本必须适合一个盒子 所以我必须将其分解并使其适合 因此 我想我可以使用TextView并在我的自定义中绘制它View 这是我尝试过的 canvas drawRoundRect rec
  • 如何在 Two.js 中解释外部 svg 文件

    有什么方法可以在two js 中解释带有对象标记的外部svg 文件吗 我尝试了下面的方法但是 HTML JS var mySvg document getElementById mysvg contentDocument var shape
  • Maven Dll依赖问题

    我正在开发一个基于 swing 的桌面应用程序 该应用程序使用 MediaInfo dll 库 我首先像描述的那样将此 dll 安装到我的本地存储库这个答案 https stackoverflow com questions 1001774
  • java中导入语句的顺序[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 想知道 哪种是订购导入声明的正确方法 另外哪个具有更高的可读性 like 外部课程 如java util List 然后是内部包类 仅按字母顺序
  • Tensorflow 中 sess.run([op1, op2...]) 的顺序

    我想知道 sess run ops list 中操作列表的运行顺序是什么 例如 对于典型的分类场景 loss sess run train op loss op if train op先运行 那么损失就是当前反向传播之后的损失 但如果los