为什么在我使用reuse = True添加额外的推断后,损失会改变值

时间:2016-11-13 18:08:09

标签: tensorflow

在张量流示例cifar10中,在我再次使用reuse = True添加一个推理后,损失值会发生变化。

最初:

2016-11-13 06:08:04.936044: step 0, loss = 4.68 (6.5 examples/sec;
19.787 sec/batch) 

我改变后:

2016-11-13 06:00:50.400917: step 0, loss = 7.05 (6.4 examples/sec; 20.109 sec/batch)

我不明白为什么。我所做的所有更改如下,

1)在cifar10_train.py中,我添加了一行

logits = cifar10.inference(images, reuse = False)
logits2 = cifar10.inference(images, reuse=True)

2)在cifar10.py中,我向inference()

添加了重用
def inference(images, reuse):
  with tf.variable_scope('conv1', reuse) as scope:
......

然后我发现损失值非常不同。

最初:

2016-11-13 06:08:04.936044: step 0, loss = 4.68 (6.5 examples/sec; 19.787 sec/batch)

我改变后:

2016-11-13 06:00:50.400917: step 0, loss = 7.05 (6.4 examples/sec; 20.109 sec/batch)

为什么会这样?

1 个答案:

答案 0 :(得分:0)

参数重用是真意味着logits和logits2使用相同的模型来获取它们的输出,如果重用是False,logits和logits2来自不同的模型 有关了解我所说内容的更多信息,您可以观看:https://www.tensorflow.org/programmers_guide/variable_scope