tf.get_variable_scope()。reuse_variables()返回None

时间:2016-06-05 12:08:57

标签: tensorflow

我正在努力在我的工作中使用多GPU塔式defs,但它似乎有错误:损失太大而且没有更新。

我认为问题来自以下代码:

# Calculate the gradients for each model tower.
tower_grads = []
for i in xrange(num_gpus):
  with tf.device('/gpu:%d' % i):
    with tf.name_scope('%s_%d' % (TOWER_NAME, i)) as scope:
      loss = tower_loss(scope)

      ####### HERE #######
      # Reuse variables for the next tower.
      tf.get_variable_scope().reuse_variables()
      ####################

      grads = opt.compute_gradients(loss)
      tower_grads.append(grads)

print(tf.get_variable_scope().reuse_variables())打印None

您认为问题是什么?

我只使用INFERENCE中的CONV1,CONV2,FC3,FC4设置variable_scope,就像在cifar10_multi_gpu_train.py中一样。

2 个答案:

答案 0 :(得分:3)

您的代码没有问题,至少没有tf.get_variable_scope().reuse_variables()

函数reuse_variables()将始终生成None。它唯一的功能是将当前范围的属性reuse设置为True

我认为你把它误认为是一个会返回当前范围内所有变量的函数。

答案 1 :(得分:0)

请参阅source code,因为您可以看到它没有回复。因此,你可以得到和打印出来的只是无。以下是相关摘录:

  def reuse_variables(self):
    """Reuse variables in this scope."""
    self._reuse = True

实际上,它只是打开_reuse。