“冻结”张量流中的一些变量/范围:stop_gradient 与传递变量以最小化

2024-03-02

我正在尝试实施对抗性神经网络 http://arxiv.org/abs/1406.2661,这需要在交替训练小批量期间“冻结”图的一个或另一部分。 IE。有两个子网:G 和 D。

G( Z ) ->  Xz
D( X ) ->  Y

其中损失函数G依赖于取决于D[G(Z)], D[X].

首先,我需要在固定所有 G 参数的情况下训练 D 中的参数,然后在固定 D 中的参数的情况下训练 G 中的参数。第一种情况下的损失函数在第二种情况下将是负损失函数,并且更新必须应用于第一子网还是第二子网的参数。

我看到张量流有tf.stop_gradient功能。为了训练 D(下游)子网络,我可以使用此函数来阻止梯度流

 Z -> [ G ] -> tf.stop_gradient(Xz) -> [ D ] -> Y

The tf.stop_gradient注释非常简洁,没有内联示例(并且示例seq2seq.py太长而且不太容易阅读),但看起来必须在图形创建过程中调用它。这是否意味着如果我想以交替批次阻止/解除阻止梯度流,我需要重新创建并重新初始化图模型?

似乎还有无法通过以下方式阻止梯度流经 G(上游)网络:tf.stop_gradient, right?

作为一种替代方案,我看到可以将变量列表传递给优化器调用,如下所示opt_op = opt.minimize(cost, <list of variables>),如果可以获取每个子网范围内的所有变量,这将是一个简单的解决方案。一个人可以得到一个<list of variables>对于 tf.scope?


正如您在问题中提到的,实现此目的的最简单方法是使用单独的调用创建两个优化器操作opt.minimize(cost, ...)。默认情况下,优化器将使用中的所有变量tf.trainable_variables() https://www.tensorflow.org/versions/master/api_docs/python/state_ops.html#trainable_variables。如果你想将变量过滤到特定的范围,你可以使用可选的scope论证tf.get_collection() https://www.tensorflow.org/versions/master/api_docs/python/framework.html#get_collection如下:

optimizer = tf.train.AdagradOptimzer(0.01)

first_train_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,
                                     "scope/prefix/for/first/vars")
first_train_op = optimizer.minimize(cost, var_list=first_train_vars)

second_train_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,
                                      "scope/prefix/for/second/vars")                     
second_train_op = optimizer.minimize(cost, var_list=second_train_vars)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“冻结”张量流中的一些变量/范围:stop_gradient 与传递变量以最小化 的相关文章

随机推荐

  • 如何使用 javascript 替换字符串中所有出现的变量?

    我正在尝试使用 javascript 替换字符串中所有出现的变量 这不起作用 var id 1 var re new RegExp id g var newHtml oldHtml replace re 2 这仅替换第一次出现的 id va
  • 按随机顺序对数组列表进行排序

    我正在编写一个纸牌游戏 我有一个ArrayList持卡 Object 在哪里 他们每个人都有自己的 id 由于我想让这个游戏支持多人模式 我必须以某种方式在两个玩家之间发送 接收游戏进度 现在 如果我在一侧洗牌 我必须在另一侧做同样的事情
  • 使用 Nginx 设置 Laravel

    我正在尝试设置Laravel http laravel com 可使用的 PHP 框架Nginx http wiki nginx org Main 这是我的目录结构 project application laravel public in
  • 获取 Azure AD B2C 策略的 SAML 元数据时出错 - AADB2C90022

    在 Azure AD B2C 中设置自定义策略以连接到 ADFS 身份提供程序 这需要一个 SAML 元数据端点 如下面链接的文档中所指定 https learn microsoft com en us azure active direc
  • 为什么 XHTML 中的


    不同?

    这是 HTML 页面的完整源代码 one br two br three br four 谁能解释为什么当我在 IE8 或 chrome 中查看页面时 三 和 四 之间会出现额外的空行 我认为标准应该让所有浏览器看起来都一样 据我所知 这个
  • 自动将 CSV 文件导入 SQL Server [重复]

    这个问题在这里已经有答案了 我正在尝试将许多不同的 csv 文件导入 SQL Server 2008R2 数据库 文件中的数据以逗号分隔 我对文件格式没有发言权 有些列是文本 并用双引号分隔 就像在 Excel 中一样 这些列包含的文本可能
  • 在View的背景中画一个半圆

    我正在尝试创建一个背景为半圆的 TextView 我使用 ShapeDrawable 创建一个椭圆形 我尝试使用 ScaleDrawable 将椭圆形的垂直尺寸加倍并剪辑它来创建半圆 但是 ScaleDrawable 没有任何效果 为什么不
  • 我可以使用新的 ZeroClipboard 从剪贴板获取数据吗?

    我在项目中使用这个新版本的 ZeroClipboard https github com jonrohan ZeroClipboard https github com jonrohan ZeroClipboard 创建按钮来从 HTML
  • python中的加权非负最小二乘线性回归[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道有一个加权 OLS 求解器 http statsmodels sourceforge net d
  • 是否可以自定义 Visual Studio 2017 SSRS rptproj MSBuild 文件?

    我的公司对自定义 MSBuild 目标文件库进行了大量投资 我们用它来构建完整的产品 我们在源代码管理中拥有的每个项目文件都会导入至少一个自定义目标文件 这些文件最终都会导入一个包含大量通用目标和属性的核心目标文件 最近 我们在我们的解决方
  • 给定输入生成真值表?

    是否有一种智能算法可以获取多个概率并在多维数组或容器内生成相应的真值表 Ex n 3 N 0 0 0 0 0 1 0 1 0 1 1 1 我可以使用 for 循环和 If 来完成此操作 但我知道我的方法会很慢且耗时 因此 我想问是否有一种高
  • Bootstrap 3 - 更改下拉菜单背景颜色

    我对 Bootstrap 很陌生 我设置了一个下拉菜单并尝试了颜色 我想做的是在选择下拉标题药丸后更改其颜色 它目前变为浅灰色 这是我的代码 div class row hidden xs div class col md 12 ul cl
  • 无法在 Selenium (Python) 中定位元素

    我尝试在 Chrome 中使用 Selenium 但无法在页面上找到元素 我尝试使用链接文本 XPath 和完整 XPath 但只有一个错误 并且没有单击该元素 from selenium import webdriver from sel
  • Python:使用递归算法作为生成器

    最近 我编写了一个函数来生成具有重要约束的某些序列 这个问题是通过自然递归解决方案来解决的 现在 即使对于相对较小的输入 序列也有数千个 因此我更愿意使用我的算法作为生成器 而不是使用它来填充所有序列的列表 这是一个例子 假设我们想用递归函
  • 如何将字母表中的 3 个字母前移(凯撒密码)?

    我正在尝试制作一个程序来加密用户提交的字符串 我想使用一种加密技术 其中字符串是字母表中的前 3 个字母 例子 abc会成为def 目前我有一个文本框 TextBox1 和一个按钮 Button1 到目前为止我的代码 Private Sub
  • 在Eclipse中通过项目搜索

    如何在Eclipse中通过项目搜索某个单词 当我启动 CTRL h 时 我需要选择字段 方法或 但我需要查找项目中所有出现的情况 而不是方法 字段或 如何实现这一目标 CTRL H gt File Search gt Containing
  • 如何将文件添加到应用程序沙箱中的 /Documents 目录

    这是我所在的地方 I have JSON files I need to mount into Objective C Objects I have an XCode Project I have dragged the folder of
  • Javascript 无法解析相对于当前脚本的工作路径

    我有一个脚本在http localhost js foo js需要从文件中生成一个 Web Workerhttp localhost js fooWorker js 我以为我可以做这样的事情 var worker new Worker fo
  • 文本区域编辑器 Redactor。使用 jQuery 插入值

    有字段文本区域id tr 使用 HTML 编辑器 Redactor 最新版本 尝试按照 API 文档中的描述准确设置字段的值 tr redactor insertText text or tr redactor insertHtml tex
  • “冻结”张量流中的一些变量/范围:stop_gradient 与传递变量以最小化

    我正在尝试实施对抗性神经网络 http arxiv org abs 1406 2661 这需要在交替训练小批量期间 冻结 图的一个或另一部分 IE 有两个子网 G 和 D G Z gt Xz D X gt Y 其中损失函数G依赖于取决于D