tensorflow Optimizer.py“ optimizer._get_variable_for”文件功能

时间:2018-07-27 09:34:32

标签: python tensorflow optimization

我正在尝试在tensorflow中实现优化器,并且一直在从旧版本的tensorflow查看优化器代码,并想了解此功能_get_variable_for的作用是什么?这是优化程序文件中的第一个函数。

任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:-1)

我看到此函数检查两个条件。

ResourceVariable VarHandleOp

根据code

中的注释,这是 ResourceVariable

”例如,如果对一个ResourceVariable分配了多个   一个session.run调用,每个操作都有一个定义明确的值   如果分配和读取已连接,则使用变量的值   在图中的边缘。考虑下面的示例,其中两次写   会导致tf.Variable和tf.ResourceVariable行为不同:“

  a = tf.Variable(1.0, use_resource=True)
  a.initializer.run()
  assign = a.assign(2.0)
  with tf.control_dependencies([assign]):
    b = a.read_value()
  with tf.control_dependencies([b]):
    other_assign = a.assign(3.0)
  with tf.control_dependencies([other_assign]):
    # Will print 2.0 because the value was read before other_assign ran. If
    # `a` was a tf.Variable instead, 2.0 or 3.0 could be printed.
    tf.Print(b, [b]).eval()
根据{{​​3}}

VarHandleOp 似乎具有更深的语义

“管理变量放置位置的一种常见方法是创建一种方法来确定每个Op的放置位置,并在用tf.device():调用时使用该方法代替特定的设备名称。其中要在2个GPU上训练模型并将变量放置在CPU上,将存在一个循环,用于在2个GPU的每个GPU上创建和放置“塔”。表示类型为Variable,VariableV2和VarHandleOp的Ops,并指示它们将放置在CPU上。所有其他Ops将放置在目标GPU上。“

它通过示例代码进一步说明了这种情况。