我已经使用 tensorflow 有一段时间了。起初我有这样的东西:
def myModel(training):
with tf.scope_variables('model', reuse=not training):
do model
return model
training_model = myModel(True)
validation_model = myModel(False)
主要是因为我从一些强迫我这样做的 MOOC 开始。但他们也没有使用 TFRecords 或 Queues。而且我不知道为什么要使用两个独立的模型。我尝试只构建一个并使用feed_dict
: 提供数据,一切正常。
从那以后我通常只使用一种模型。我的输入总是占位符,我只输入训练或验证数据。
最近,我注意到在使用tf.layers.dropout
和的模型上有一些奇怪的行为tf.layers.batch_normalization
。这两个函数都有一个我与tf.bool
占位符一起使用的“培训”参数。我见过 tf.layers 通常与 a 一起使用tf.estimator.Estimator
,但我没有使用它。我已经阅读了 Estimators 代码,它似乎为训练和验证创建了两个不同的图表。可能是这些问题是由于没有两个独立的模型引起的,但我仍然持怀疑态度。
是否有一个明确的原因我没有看到这意味着必须使用两个单独的等效模型?