gpt4 book ai didi

tensorflow - tensorflow 中的 tf.GraphKeys.TRAINABLE_VARIABLES 和 tf.GraphKeys.UPDATE_OPS 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 21:43:21 26 4
gpt4 key购买 nike

这里是 doc tensorflow中的tf.GraphKeys,如TRAINABLE_VARIABLES :将由优化器训练的变量对象的子集。

我知道tf.get_collection() ,它可以找到你想要的一些张量。

使用时tensorflow.contrib.layers.batch_norm() ,参数updates_collections默认值为 GraphKeys.UPDATE_OPS .

我们如何理解这些集合,以及它们之间的差异。

此外,我们可以在 ops.py 中找到更多信息。

最佳答案

这是两个不同的东西。

TRAINABLE_VARIABLES
TRAINABLE_VARIABLES是在最小化损失时应该修改的变量或训练参数的集合。例如,这些可以是确定网络中每个节点执行的功能的权重。

如何将变量添加到此集合中? 当您使用 tf.get_variable 定义新变量时,这会自动发生。 , 除非你指定

tf.get_variable(..., trainable=False)

您何时希望变量不可训练? 这不时发生。例如,有时您会希望使用两步法,首先在大型通用数据集上训练整个网络,然后在与您的问题特别相关的较小数据集上微调网络。在这种情况下,您可能只想微调网络的一部分,例如最后一层。将某些变量指定为不可训练是执行此操作的方法之一。

UPDATE_OPS
UPDATE_OPS是操作的集合(图运行时执行的操作,如乘法、ReLU 等),而不是变量。具体来说,这个集合维护了一个需要在每个训练步骤之前运行的操作列表。

如何将操作添加到此集合中?
根据定义,update_ops 通过损失最小化发生在常规训练流程之外,因此通常您只会在特殊情况下将操作添加到此集合中。例如,在执行批标准化时,您希望在每个训练步骤之前重新计算批均值和方差,这就是它的完成方式。使用 tf.contrib.layers.batch_norm 进行批量标准化的机制 this article 中有更详细的描述.

关于tensorflow - tensorflow 中的 tf.GraphKeys.TRAINABLE_VARIABLES 和 tf.GraphKeys.UPDATE_OPS 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48260394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com