Here is doc https://www.tensorflow.org/api_docs/python/tf/GraphKeys张量流中的tf.GraphKeys,例如TRAINABLE_VARIABLES
:将由优化器训练的变量对象的子集。
而且我知道tf.get_collection()
,它可以找到你想要的一些张量。
使用时tensorflow.contrib.layers.batch_norm()
,参数updates_collections
默认值为GraphKeys.UPDATE_OPS
.
我们如何理解这些集合以及它们之间的差异。
此外,我们可以在 ops.py 中找到更多信息。
这是两件不同的事情。
可训练变量
TRAINABLE_VARIABLES
是的集合变量或在最小化损失时应修改的训练参数。例如,这些可以是确定网络中每个节点执行的功能的权重。
如何将变量添加到该集合中?当您使用以下命令定义新变量时,这种情况会自动发生tf.get_variable
,除非您指定
tf.get_variable(..., trainable=False)
您什么时候希望变量无法训练?这种情况时有发生。例如,有时您会想要使用两步方法,首先在大型通用数据集上训练整个网络,然后在与您的问题特别相关的较小数据集上微调网络。在这种情况下,您可能只想微调网络的一部分,例如最后一层。将某些变量指定为不可训练是实现此目的的方法之一。
更新操作
UPDATE_OPS
是一个集合ops(图运行时执行的操作,如乘法、ReLU 等),而不是变量。具体来说,该集合维护一个需要在每个训练步骤之前运行的操作列表。
如何将操作添加到此集合中?根据定义,update_ops 发生在损失最小化的常规训练流程之外,因此通常只有在特殊情况下才会将操作添加到此集合中。例如,在执行批量归一化时,您希望在每个训练步骤之前重新计算批量均值和方差,这就是它的完成方式。使用批量归一化的机制tf.contrib.layers.batch_norm
中有更详细的描述本文 http://ruishu.io/2016/12/27/batchnorm/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)