如何在TensorFlow中重用模型框架代码?

时间:2018-02-24 02:35:55

标签: python tensorflow neural-network deep-learning

有一些具有相同架构的常见层,我想分别训练它们。我的代码显示出来了,我担心我的代码会精确地构建和训练一个模型而不是两个模型。实际上,我想分别训练两个common图层,并获得两个不同权重的common图层。

我的代码是对的吗?或者我应该怎么做?

def common():
    # some layers
    pass

out1 = common(input)
out2 = common(input)

loss1
loss2
...

1 个答案:

答案 0 :(得分:1)

简短的回答是:如果你没有特别要求tensorflow重用变量(例如tf.variable_scope(scope, reuse=True)),那么每次都会创建新的变量。

以下是关于此主题的广泛documentation,包括"共享变量"部分。

回复以下评论:有一堆可变范围。最重要的一个(最近的跟踪)将占上风。不允许您通过reuse选项的接口在此顶部变量范围中明确查看。这样做的接口可以在执行期间有效地创建一个variable_scope。

如果您尝试创建两个具有相同名称的变量,那么为您创建的top变量范围将会失败。

a = tf.get_variable("v", [1])
b = tf.get_variable("v", [1])
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<...> 
ValueError: Variable v already exists, disallowed.
            Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? ...