首先,也许我已经理解了指数衰减和tf。培养。 exponentialMovingAverage尚未完全完成。也许:)据我所知,到目前为止,每个变量都有一个副本,可以进行不同的计算,以获得更好的培训或评估结果。如果有人知道明确的解释,我会很高兴(英语或德语)。
现在我的问题是,我正在使用tf.train.ExponentialMovingAverage
训练CNN(如果需要更多代码,我稍后会添加,请发表评论)。
...
variable_averages =
tf.train.ExponentialMovingAverage(get_movining_average_decay(), global_step)
variables_averages_op =
variable_averages.apply(tf.trainable_variables())
...
然后我使用tf.train.ExponentialMovingAverage
评估模型,效果很好。
...
variable_averages =
tf.train.ExponentialMovingAverage(get_movining_average_decay())
# This may be the problem,
# if no shadow variables have been created during the training,
# no variables can be restored.
variables_to_restore = variable_averages.variables_to_restore()
saver = tf.train.Saver(variables_to_restore)
...
但如果我在没有tf.train.ExponentialMovingAverage
的情况下训练CNN,我无法使用tf.train.ExponentialMovingAverage
评估模型。很可能这条线必须改变,但我不知道是什么。
variables_to_restore = variable_averages.variables_to_restore()
如何自定义此代码,或者在TensorFlow中是不可能的,还是我仍然不能理解指数衰减,一般情况下这是不可能的?